Duplicar posible:
Forward declaration of nested types/classes in C++¿Cómo reenvío declarar una clase interna?
que tiene una clase como así ...
class Container {
public:
class Iterator {
...
};
...
};
Por otra parte, quiero pasar un contenedor :: iterador por referencia, pero no quiero incluir el archivo de encabezado. Si intento reenviar declaro la clase, obtengo errores de compilación.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
Compilar el código anterior da ...
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
¿Cómo puedo declarar adelante esta clase, así que no tengo que incluir el archivo de cabecera que declara la clase de iterador?
La clase base común es la solución más utilizada en mi extremo. – Coyote
Puede usar un amigo para solucionar este problema, si lo desea. –
Eso está mal: http: //en.cppreference.com/w/cpp/language/nested_types – Nikerboker