Powiel możliwe:
Forward declaration of nested types/classes in C++Jak przesłać dalej, zadeklaruj wewnętrzną klasę?
Mam klasy jak tak ...
class Container {
public:
class Iterator {
...
};
...
};
indziej, chcę przejść do pojemnika :: Iterator przez odniesienie, ale nie chcę dołączać pliku nagłówkowego. Jeśli spróbuję przesłać dalej, deklaruję klasę, otrzymuję błędy kompilacji.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
Kompilacja powyższy kod daje ...
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
Jak mogę zadeklarować tę klasę do przodu, więc nie trzeba dołączyć plik nagłówka, który deklaruje klasę Iterator?
Podstawową klasą podstawową jest najczęściej używane rozwiązanie na moim końcu. – Coyote
Możesz użyć znajomego do obejścia tego, jeśli chcesz. –
To źle: http: //en.cppreference.com/w/cpp/language/nested_types – Nikerboker