que estoy tratando de declarar y utilizar una clase B dentro de una clase A y definir B fuera A.
Sé que es un hecho de que esto es posible porque Bjarne Stroustrup
utiliza esto en su libro "El lenguaje de programación C++"
(página 293, por ejemplo, las clases String y Srep).C++ clases anidadas error declaración adelantada
Así que este es mi pieza mínima de código que causa problemas
class A{
struct B; // forward declaration
B* c;
A() { c->i; }
};
struct A::B {
/*
* we define struct B like this becuase it
* was first declared in the namespace A
*/
int i;
};
int main() {
}
Este código da los siguientes errores de compilación en g ++:
tst.cpp: In constructor ‘A::A()’:
tst.cpp:5: error: invalid use of undefined type ‘struct A::B’
tst.cpp:3: error: forward declaration of ‘struct A::B’
Traté de mirar en el C++ PF e closeset Obtuve here y here pero
que no se aplican a mi situación.
También encontré read this pero no resuelve mi problema.
Tanto gcc y MSVC 2005 errores del compilador dan en este
sí, que trabajó gracias :) – xxxxxxx
De nada! :-) –
El constructor se define después de declarar B. Debe definirse después de que se define B. –