Czytałem niektóre z deklaracji dotyczących przyszłości, w tym na tym forum. Wszyscy mówią, że ratuje nas przed tym pliku nagłówkowego, jednak poniższy kod generuje błąd:Zgłoszenie do przodu generuje niezgodny błąd typu
#ifndef CLASSA_H_
#define CLASSA_H_
class B;
class A {
public:
A();
~A();
int getCount();
private:
static int _count;
int _num;
B _b1; //ERROR
};
kompilator mówi: A.h:23: error: field ‘_b1’ has incomplete type
Zauważyłem, że jeśli zrobię _b1
typu B*
problem jest rozwiązany.
Czy zatem zgłoszenie do przodu jest dobre tylko dla typów wskaźników?
Jeśli chcę, aby A
posiadał obiekt B
, muszę mieć #inlcude "B.h"
?
dziękuję!
Trochę autopromocji: oto odpowiedź wyjaśniająca [co można i czego nie można zrobić z niekompletnymi typami] (http://stackoverflow.com/questions/553682/when-to- use-forward-declaration/553869 # 553869) (tj typy zadeklarowane, ale jeszcze nie zdefiniowane). –