Estoy tratando de crear un objeto de lista, con la clase de iterador anidada dentro para comprender cómo funciona. En algún método, estoy tratando de devolver un objeto iterador pero no funciona. creé un ejemplo para demostrar el problema:C++ devolviendo clase anidada con la plantilla en el problema de clase base
// CLASS A
template <class T>
class A
{
public:
class B;
A(){}
};
// CLASS B
template <class T>
class A<T>::B
{
private:
int varB;
public:
B(B& b);
B(const int&);
B returnThis();
};
template <class T>
A<T>::B::B(const int& value)
{
varB = value;
}
template <class T>
A<T>::B::B(B& b)
{
varB = b.varB;
}
template <class T>
A<T>::B A<T>::B::returnThis()
{
return *this;
}
// MAIN
void main()
{
A<int>::B classB(10);
}
El error está cerca de esas líneas:
template <class T>
A<T>::B A<T>::B::returnThis()
El compilador me dice que me falta una; antes A :: B :: returnThis()
Estoy tratando de resolver este problema por días y no puedo encontrar la manera de hacerlo funcionar ... Realmente agradecería algo de ayuda. ¡Gracias de antemano!
¡Muchas gracias! Voy a tener un look @ typename! –
No hay problema. :) – GManNickG