Mögliche Duplizieren:
Forward declaration of nested types/classes in C++Wie kann ich eine innere Klasse weiterleiten?
Ich habe eine Klasse wie so ...
class Container {
public:
class Iterator {
...
};
...
};
An anderer Stelle habe ich einen Container :: Iterator durch Verweis übergeben möchten, aber ich möchte die Header-Datei nicht einschließen. Wenn ich versuche, die Klasse zu deklarieren, bekomme ich Kompilierungsfehler.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
Kompilieren der obige Code gibt ...
test.h:3: error: ‘Iterator’ in class ‘Container’ does not name a type
test.h:5: error: variable or field ‘Foo’ declared void
test.h:5: error: incomplete type ‘Container’ used in nested name specifier
test.h:5: error: ‘it’ was not declared in this scope
Wie kann ich uns darauf, diese Klasse deklarieren also muss ich die Header-Datei nicht enthalten, die die Iterator-Klasse deklariert?
Die gemeinsame Basisklasse ist die am meisten genutzte Lösung. – Coyote
Sie können Freund verwenden, um dies zu umgehen, wenn Sie möchten. –
Das ist falsch: http: //en.cppreference.com/w/cpp/language/nested_types – Nikerboker