Possible en double:
Forward declaration of nested types/classes in C++Comment transférer une classe interne?
J'ai une classe comme si ...
class Container {
public:
class Iterator {
...
};
...
};
Ailleurs, je veux passer un conteneur :: iterator par référence, mais je ne veux pas inclure le fichier d'en-tête. Si j'essaie de transmettre la classe, j'obtiens des erreurs de compilation.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
le code ci-dessus Compiler donne ...
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
Comment puis-je déclarer avant cette classe, donc je n'ai pas d'inclure le fichier d'en-tête qui déclare la classe Iterator?
La classe de base commune est la solution la plus utilisée de mon côté. – Coyote
Vous pouvez utiliser un ami pour contourner ce problème, si vous le souhaitez. –
C'est faux: http: //en.cppreference.com/w/cpp/langue/nested_types – Nikerboker