Eventuali duplicati:
Forward declaration of nested types/classes in C++Come inoltrare dichiaro una classe interna?
Ho una classe in questo modo ...
class Container {
public:
class Iterator {
...
};
...
};
Altrove, voglio passare un contenitore :: Iterator per riferimento, ma non voglio includere il file di intestazione. Se provo ad inoltrare la classe, ottengo errori di compilazione.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
Compilare il codice di cui sopra dà ...
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
Come posso avanti dichiarare questa classe in modo da non dover includere il file di intestazione che dichiara la classe Iterator?
La classe di base comune è la soluzione più utilizzata sul mio terminale. – Coyote
Puoi usare un amico per aggirare questo, se vuoi. –
Questo è sbagliato: http: //en.cppreference.com/w/cpp/lingua/nested_types – Nikerboker