Ich versuche, eine Klasse B innerhalb einer Klasse zu deklarieren und verwenden A und definieren B außerhalb A.
Ich weiß für eine Tatsache, dass dies möglich ist, weil Bjarne Stroustrup
diese verwendet in sein Buch "Die C++ Programmiersprache"
(Seite 293, zum Beispiel die String-und Srep-Klassen).C++ Verschachtelte Klassen Vorwärtsdeklaration Fehler
Das ist also mein minimal Stück Code, das Problem
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 in g ++ Ursachen:
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 in dem C++ FAQ zu schauen versucht und den genähert Ich habe here und here aber
diejenigen, die nicht auf meine Situation zutreffen.
Ich auch read this von hier, aber es löst nicht mein Problem.
Beiden gcc und MSVC 2005 geben Compiler-Fehler auf diesen
ja, das hat funktioniert danke :) – xxxxxxx
Gern geschehen! :-) –
Der Konstruktor wird definiert, nachdem B deklariert wurde. Es muss definiert werden, nachdem B definiert wurde. –