在做数据结构实验时,遇到了这样一个问题:
ncll.h:168:1: error: need ‘typename’ before ‘linkList<ElemType>::nodeP’ because ‘linkList<ElemType>’ is a dependent scope
linkList<ElemType>::nodeP linkList<ElemType>::getHead()
^~~~~~~~~~~~~~~~~~
下面是这次实验中的部分代码
template <typename ElemType>
class linkList
{
public:
class linkNode
{
public:
ElemType data;
linkNode *next;
};
typedef linkNode * nodeP;
nodeP getHead();
protected:
nodeP head;
};
template <typename ElemType>
linkList<ElemType>::nodeP linkList<ElemType>::getHead()
{
return head;
}
查阅资料后了解到,在模板类外部使用自定义的数据类型需要添加typename
关键字;
如下所示
template <typename ElemType>
typename linkList<ElemType>::nodeP linkList<ElemType>::getHead()
{
return head;
}