我的问题与此非常相似。但是,我的实现有所不同,因为我使用了模板化的链接列表
这里是我得到错误的地方(第二行)。此函数的目的是返回一个指向列表
中第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;
};
本质上这是相同的问题,除了我的列表是模板化的。因此,在修复了其他问题之后,我的代码仍然会抛出错误。你知道为什么会这样吗?
您需要使用typename
关键字:
template <class T>
typename List<T>::ListNode* List<T>::find(int k)
{
...
}
这让编译器知道ListNode
是一个类型。当你有一个依赖于类型的名称(即依赖于模板参数的名称)时,