I have a class called node inside another class which is templated. Some of the methods of class Node returns Node pointer. This is an excerpt of how I implemented
template <typename T>
class myClass{
....
class Node{
Node* getNodePointer();
...
}
}
...
template <typename T>
myClass<T>::Node* myClass<T>::Node::getNext()
{ return next; }
When I compile above code, I get this error " myClass.h:138:1: error: need ‘typename’ before ‘myClass::Node’ because ‘myClass’ is a dependent scope". How do I fix this problem? Many thanks
To clarify, the compiler has no idea that
myClass<T>::Node
is now or ever will be a type. Think of it this way:You have to make the promise to the compiler that the type is a typename. It defaults to assuming that it is a value.
The compiler's error message s pretty clear about this point:
To use nested
class
es,struct
s ortypedef
initions from a template class you need to add thetypename
keyword to tell the compiler you want to use it as a type: