Je suis en train de déclarer et utiliser une classe B à l'intérieur d'une classe A et définir B en dehors A.
Je sais pertinemment que cela est possible parce que Bjarne Stroustrup
utilise en son livre "Le langage de programmation C++"
(page 293, par exemple les classes String et Srep).classes C++ emboîtés erreur de déclaration avant
Donc ceci est mon morceau minimum de code qui provoque des problèmes
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() {
}
Ce code donne les erreurs de compilation suivantes 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’
j'ai essayé de regarder le C++ Faq et closeset J'ai eu était here et here mais
ceux qui ne s'appliquent pas à ma situation. J'ai aussi read this d'ici mais ça ne résout pas mon problème.
gcc et MSVC 2005 donner des erreurs du compilateur sur ce
oui, cela a fonctionné merci :) – xxxxxxx
De rien! :-) –
Le constructeur est défini après la déclaration de B. Il doit être défini après que B est défini. –