прямое объявление генерирует несовместимую ошибку типа
Я читал некоторые о предварительных декларациях, в том числе на этом форуме. Все они говорят, что это спасает нас от включения файла заголовка, однако следующий код генерирует ошибку:
#ifndef CLASSA_H_
#define CLASSA_H_
class B;
class A {
public:
A();
~A();
int getCount();
private:
static int _count;
int _num;
B _b1; //ERROR
};
Компилятор говорит:A.h:23: error: field ‘_b1’ has incomplete type
Я заметил, что если я сделаю_b1
типаB*
проблема решена.
Так является ли прямое объявление хорошим только для типов указателей?
Если я хочуA
держатьB
возражать, я должен#inlcude "B.h"
?
Спасибо!