У меня есть класс, который нужен указатель на дочерний класс:Указатель на дочерний класс
class A
{
protected :
B *pB;
}
class B : public A
{
}
Но это не работает.
У меня есть класс, который нужен указатель на дочерний класс:Указатель на дочерний класс
class A
{
protected :
B *pB;
}
class B : public A
{
}
Но это не работает.
Поместите опережающее объявление в начале:
class B;
class A
{
protected :
B *pB;
}
class A : public B
{
}
не должен ли он быть классом B: public A? –
Вам необходимо переслать объявить B иначе компилятор не знает B существует, если он прислушался после А.
class B;
class A
{
protected :
B *pB;
}
class A : public B
{
}
вперед объявить class B
, и это должно быть class B: public A
, а не наоборот. , т. Е.
class B;
class A
{
protected:
B *pB;
}
class B: public A
{
}
Поместить перед объявлением класса 'A' прямое объявление класса« B ». Но наличие базового класса о производных типах не является отличным дизайном. – juanchopanza
Вы, конечно, имели в виду 'класс B: public A'? – syam
Для того, чтобы что-либо в вашем вопросе вообще имело смысл, я думаю, что «класс A: public B» на самом деле должен быть «классом B: public A». –