Я думаю, что заголовок вопроса может оказаться невозможным, но у меня есть класс (давайте назовем его A), у которого есть конструктор, которому нужен указатель на другой класс (называемый B). Это было бы хорошо, но когда я определяю класс в третьем классе (называемый C), я получаю эту ошибку после помещения переменной в конструктор: error: expected identifier before ‘&’ token
, затем, если я удалю &
, я получаю: error: ‘ClassA’ is not a type
.Проблемы с конструктором с классом внутри другого класса
Для тех, кто не может понять, что я только что сказал (я не виню тебя), вот пример:
class A
{
private:
int number;
//etc, etc...
};
class B
{
private:
A* ClassAPntr;
public:
B(A* objectPointer)
{
ClassAPntr = objectPointer;
}
};
class C
{
private:
A ClassA;
B ClassB(&ClassA);
};
int main()
{
C classC;
}
Спасибо, это работает отлично! Хотя это не связано с вопросом, почему мой код не работает (как, почему я не могу объявить конструкторы наедине)? Есть ли веская причина, или она может быть исправлена как C++ 20 или что-то в этом роде? – bboy3577
@ bboy3577 Доступ (то есть 'private') не является проблемой. Это просто синтаксически неверно. В C++ 11 появилась возможность добавлять элемент-бит-или-равный-инициализатор для нестатических членов данных, поэтому вы можете * делать 'B b {& a}' там. – Barry