Я знаю свой подход к объектно-ориентированному программированию, но я привык к Java, и я
никогда не трогал C ++ до недавнего времени.
Я думаю, что моя проблема не столько связана с синтаксисом, сколько с философией
ООП в С ++. Я понимаю разницу между указателями и адресами и
стек, куча и прочее, но я все еще чувствую, что что-то упустил.
Вот пример: у меня есть класс (Shape), который содержит некоторые данные. у меня есть другой
класс (приложение), используя несколько форм.
class Square {
private:
int x;
int y;
int size;
public:
/* constructor */
Square(int x, int y, int size);
}
class App {
private:
Square redSquare;
Square blueSquare;
public:
void setup();
void draw();
}
В какой-то момент что-то собирается создать экземпляр моего приложения и вызвать setup (). Проблема в том, что когда я объявляю класс App (скажем, в App.hpp), создаются экземпляры «redSquare» и «blueSquare», а не просто объявляются. Будучи программистом на Java, я бы в этом примере создал свои классы в setup (). Но это значит, что я не могу сделать это, как указано выше, мне нужно настроить redSquare и blueSquare как POINTERS, а затем я могу создать их, используя new в setup ().
Но так ли это? Или вы бы сделали конструктор по умолчанию
параметры, создайте redSquare и blueSquare, как указано выше, а затем установите
значения этих квадратов в App.setup (), используя что-то вроде
Square.init (x, y, размер) или что-то? Или как-то иначе?
Вы когда-нибудь объединяли классы или только указатели?
Я, конечно, могу взломать это так или иначе, так что оно работает само, но у меня есть
ощущение, что я делаю вещи "по-Java" и не понимаю, как думают программисты на C ++.