Ошибка использования неопределенного типа при круговом включении
Я написал два класса с этими зависимостями.
//a.h
class B:
class A{
B *b ;
A() { b = new B(this);}
print();
}
// b.h
class A;
class B{
A* a;
B(A *_a){ this->a = _a }
void foo() { a->print(); } // here i have error : use of undefined type a
}
Если я комментирую "a->print()", код компилируется, и другая функция работает, но когда я использую указатель класса A в классе B, я получаю эту ошибку:
"использование неопределенного типа"
Кто-нибудь может решить мою проблему?
Спасибо
1 ответ
Вам необходимо переместить реализацию методов за пределы заголовка и внутри файлов реализации.
Сделать a->print();
или же new B(this)
требуется полное определение.