我的问题与this非常相似。但是,我的实现不同之处在于我使用的是模板化链接列表
这是我遇到错误的地方(第二行)。此函数的目的是返回指向列表中第k个位置的节点的指针
template <class T>
List<T>::ListNode* List<T>::find(int k)
{
ListNode * curr = head;
while(curr != NULL && k > 0) {
curr = curr->next;
k--;
}
return curr;
}
这就是我的列表的样子(由节点组成,它存储T类型的任意数据)
template <class T>
class List
{
private:
class ListNode
{
public:
ListNode();
ListNode(T const & ndata);
ListNode * next;
ListNode * prev;
const T data;
};
基本上这是与我链接的问题相同的问题,除了我的列表是模板化的。因此,在进行了修复其他问题的更改之后,我的代码仍然会抛出错误。关于为什么会发生这种情况的任何想法?
答案 0 :(得分:4)
您需要使用typename
关键字:
template <class T>
typename List<T>::ListNode* List<T>::find(int k)
{
...
}
这让编译器知道ListNode
是一种类型。只要你有一个类型的依赖名称(即一个依赖于模板参数的名称),就需要它。