Ho letto alcune dichiarazioni in avanti, incluso in questo forum. Tutti dicono che ci salva dalla incluso il file di intestazione, tuttavia il seguente codice genera un errore:la dichiarazione di inoltro genera un errore di tipo incompatibile
#ifndef CLASSA_H_
#define CLASSA_H_
class B;
class A {
public:
A();
~A();
int getCount();
private:
static int _count;
int _num;
B _b1; //ERROR
};
compilatore dice: A.h:23: error: field ‘_b1’ has incomplete type
Ho notato che se faccio _b1
di tipo B*
il problema è risolto.
Quindi la dichiarazione è valida solo per i tipi di puntatore?
Se voglio A
per contenere l'oggetto B
devo #inlcude "B.h"
?
grazie!
Un po 'di auto-promozione: ecco una risposta che spiega [cosa puoi o non puoi fare con i tipi incompleti] (http://stackoverflow.com/questions/553682/when-to-to use-forward-declaration/553869 # 553869) (es tipi dichiarati ma non ancora definiti). –