Frage

Ich versuche, eine Klasse B innerhalb einer Klasse A zu deklarieren und verwenden und B definieren außerhalb A.
Ich weiß für eine Tatsache, dass dies möglich ist, weil Bjarne Stroustrup
verwendet diese „Die C ++ Programmiersprache“
in seinem Buch (Seite 293, zum Beispiel der Streich- und Srep Klassen).

Das ist also mein minimal Stück Code, das Probleme

Ursachen
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 ++:

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, an dem C ++ FAQ zu schauen und dem genähert ich erhielt, war hier und hier aber
diese nicht auf meine Situation anwenden.
Ich auch von hier href="https://stackoverflow.com/questions/237064/c-nested-classes-driving-me-crazy"> lesen, aber es ist die Lösung nicht mein Problem.

Sowohl gcc und MSVC 2005 geben Compiler-Fehler auf diesem

War es hilfreich?

Lösung

Definieren Sie den Konstruktor für A nach der Definition von struct B.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top