C++ Geschachtelte Klassen vorwärts-Deklaration Fehler

Ich versuche zu erklären, und verwenden Sie eine Klasse B innerhalb einer Klasse Ein
und definieren B außerhalb A.

Ich weiß, für eine Tatsache, dass dies möglich ist, da Bjarne Stroustrup

nutzt dies in seinem Buch "Die C++ Programmiersprache"

(Seite 293,zum Beispiel die String-und Srep-Klassen).

Also das ist mein minimal-code, der Probleme bereitet,

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() {
}

Dieser code gibt die folgende Zusammenstellung von Fehlern, die in 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

Ich habe versucht, um sich an der C++ - Faq und die closeset ich bekam, war hier und hier aber

diejenigen, die nicht relevant für meine situation.

Ich habe auch Lesen Sie diese von hier, aber es ist nicht die Lösung meines Problems.

Beide gcc und MSVC 2005 geben, compiler-Fehler, die auf dieser

InformationsquelleAutor xxxxxxx | 2008-11-21
Schreibe einen Kommentar