2010-09-26 2 views
4

Немного вопроса о нобе: Мне нужны классы A и B, для которых A имеет член B * и B имеет член A *.Рекурсивные типы данных C++

При компиляции я получаю ошибку: ISO C++ запрещает объявление «B» без типа ». Как я могу обойти это?

ответ

10

вперед объявить B (или А)

class B; //forward declaration of B 

class A 
{ 
    B *b; 
}; 

class B 
{ 
    A *a; 
}; 
6

вперед объявить один из класса а или б.

class b; //forward declaration 

class a{ 
//class a stuff 
b* ptrtoB; 

}; 


class b{ 
//class b stuff 
a* ptrtoA; 

}; 
2

Вы можете также рядный вперед объявить один из классов, если ничего другого использует его: class B* pMemberB; аль-ла-C стиль

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