在外部使用模板类中定义的数据类型

在做数据结构实验时,遇到了这样一个问题:

1
2
3
ncll.h:168:1: error: need ‘typename’ before ‘linkList<ElemType>::nodeP’ because ‘linkList<ElemType>’ is a dependent scope
linkList<ElemType>::nodeP linkList<ElemType>::getHead()
^~~~~~~~~~~~~~~~~~

下面是这次实验中的部分代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
template <typename ElemType>
class
{
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关键字;
如下所示

1
2
3
4
5
template <typename ElemType>
typename linkList<ElemType>::nodeP linkList<ElemType>::getHead()
{
return head;
}