Ошибка использования неопределенного типа при круговом включении

Я написал два класса с этими зависимостями.

//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)требуется полное определение.

Другие вопросы по тегам