Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Наследование или создание класса в классе? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ дальше - через enter http://www.cyberforum.ru/cpp-beginners/thread238509.html
диалог между пользователем-программой программа что-то пишет пользователю пользователь это все прочитал нажал энтер программа опять что-то пишет пользователю т.е. энтер это как разрешение на...
C++ КЛАССЫ Очень нужна помощь!!! подскажите где ошибки: #include <iostream> #include <windows.h> char* Rus(const char* text); using namespace std; class proverka { http://www.cyberforum.ru/cpp-beginners/thread238508.html
Все нулевые элементы матрицы разместить на местах с четными индексами строк и столбцов C++
Помогите написать код на С:wall:
передача всей матрицы в функцию C++
как передать всю матрицу в функцию? функция ничего не возвращает, я только печатает матрицу
C++ Про указатели http://www.cyberforum.ru/cpp-beginners/thread238475.html
Здравствуйте я совсем маленький C++ программер, вот сейчас разбираюсь с указателями. Подскажите пожалуйста. В книге встретил пример, который ввёл меня в ступор. #include<iostream> using...
C++ Как создавать и подключать библиотеки? Здравствуйте, я искал по форуму в интернете и в книгах, но все что я находил по этому вопросу у меня не работало, поэтому я прошу Вас показать простейший пример. в примере желательно чтобы было: как... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
05.02.2011, 16:36
Цитата Сообщение от Matlabist Посмотреть сообщение
Выдает ошибку
B::B' : cannot access private member declared in class 'A::B'
Где? В какой строке?

Цитата Сообщение от Matlabist Посмотреть сообщение
Почему в самом классе нельзя описать?
Можно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A {
 public:
  class B {
  };
  A() {
    b1 = new B;
    b2 = new B;
    b3 = new B;
  }
  ~A() {
    delete b1;
    delete b2;
    delete b3;
  }
 private:
  B *b1, *b2, *b3;
};
Цитата Сообщение от Matlabist Посмотреть сообщение
Как сделать наследование правильно?
В данном случае не нужно наследования, нужна агрегация. Это когда один объект включает в себя другие объекты.

Цитата Сообщение от Matlabist Посмотреть сообщение
Чем это хуже вот этого
По смыслу хуже. По смыслу, класс точка не уникален для класса треугольника. Класс точка может так же описывать точки, скажем, многоугольника. Поэтому по смыслу лучше сделать их раздельными.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class CPoint
{
public:
        CPoint(double x, double y)
          : m_x(x), m_y(y) {}
        double GetX() const { return m_x; }
        double GetY() const { return m_y; }
private:
        double m_x, m_y;
};
 
class CTriangle
{
public:
        CTriangle(CPoint const& p1, CPoint const& p2, CPoint const& p3)
          : m_p1(p1), m_p2(p2), m_p3(p3) {}
        CPoint GetVertex(unsigned index) const {
          // have no idea what this one does
        }
private:
        CPoint m_p1, m_p2, m_p3;
};
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru