He estado leyendo algunas declaraciones a futuro, incluso en este foro. Todos dicen que nos salva de incluir el archivo de cabecera, pero el siguiente código genera un error:forward declaration genera un error de tipo incompatible
#ifndef CLASSA_H_
#define CLASSA_H_
class B;
class A {
public:
A();
~A();
int getCount();
private:
static int _count;
int _num;
B _b1; //ERROR
};
compilador dice: A.h:23: error: field ‘_b1’ has incomplete type
me di cuenta de que si hago _b1
de tipo B*
el problema es resuelto
Entonces, ¿la declaración directa es válida solo para los tipos de puntero?
Si quiero A
para contener B
objeto tengo que #inlcude "B.h"
?
gracias!
un poco de auto-promoción: aquí es una respuesta que explica [lo que puede y no puede hacer con tipos incompletas] (http://stackoverflow.com/questions/553682/when-to- use-forward-declaration/553869 # 553869) (es decir, tipos que están declarados pero aún no definidos). –