2013-11-07 3 views
1

У меня есть класс, который нужен указатель на дочерний класс:Указатель на дочерний класс

class A 
{ 
    protected : 
     B *pB; 
} 

class B : public A 
{ 

} 

Но это не работает.

+6

Поместить перед объявлением класса 'A' ​​прямое объявление класса« B ». Но наличие базового класса о производных типах не является отличным дизайном. – juanchopanza

+3

Вы, конечно, имели в виду 'класс B: public A'? – syam

+1

Для того, чтобы что-либо в вашем вопросе вообще имело смысл, я думаю, что «класс A: public B» на самом деле должен быть «классом B: public A». –

ответ

4

Поместите опережающее объявление в начале:

class B; 

class A 
{ 
    protected : 
    B *pB; 
} 

class A : public B 
{ 

} 
+0

не должен ли он быть классом B: public A? –

3

Вам необходимо переслать объявить B иначе компилятор не знает B существует, если он прислушался после А.

class B; 

class A 
{ 
    protected : 
     B *pB; 
} 

class A : public B 
{ 

} 
1

вперед объявить class B, и это должно быть class B: public A, а не наоборот. , т. Е.

class B; 
class A 
{ 
    protected: 
    B *pB; 
} 

class B: public A 
{ 

} 
Смежные вопросы