Я пытаюсь попасть на C++, и у меня возникло несколько проблем. Мои два класса выглядит так:Указатели и круговые зависимости
#include "Account.h"
class Program
{
public:
Program(void);
~Program(void);
void SetAccount(Account account);
};
#include "Program.h"
class Account
{
public:
Program *program;
Account(void);
~Account(void);
};
Передавая экземпляр класса Account к SetAccount функции я делаю копию этого или я передаю его в качестве ссылки? Насколько я понимаю, я делаю копию, но я хотел быть уверенным. Чтобы передать его в качестве ссылки, мне нужно использовать указатели, не так ли?
Другая проблема, с которой я столкнулся, - это мой класс учетной записи. Допустим, что в какой-то момент необходимо иметь ссылку на класс программы. Проблема состоит в том, что как классы программы, так и учетные записи имеют строки «#include» друг для друга, поэтому она вызывает циклическую зависимость. Есть идеи, как их решить?
Отредактированные
Мои классы теперь выглядит так:
#include "Account.h"
class Program
{
public:
Program();
~Program();
void SetAccount(Account account);
};
class Program;
class Account
{
public:
Program *program;
Account();
~Account();
};
Когда я пытаюсь инициализировать * программу в конструкторе Account я получаю «неполный тип не допускается» и «„Программы“: нет подходящего конструктора по умолчанию ".
Как вы его инициализируете? Если вы выполняете 'program = NULL;', это будет работать. Если вы попытаетесь создать новый объект с помощью 'new Program();' тогда вы должны, конечно, знать размер, а это значит, что вы должны предоставить файл include. Операции указателей можно выполнять только с помощью прямого объявления. – Devolus
Я просто спросил то же самое выше, на другой ответ. Хотелось бы получить ответ на него. – martynaspikunas
Какая ошибка вы получаете и как выглядит ваш текущий код? – Devolus