我的问题真的很像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;
};
本质上,这与我链接到的问题是同一个问题,只是我的列表是模板化的。因此,在进行了修复其他问题的更改后,我的代码仍然会抛出错误。关于为什么会发生这种情况的任何想法?
最佳答案
您需要使用typename
关键字:
template <class T>
typename List<T>::ListNode* List<T>::find(int k)
{
...
}
这让编译器知道 ListNode
是一个类型。只要你有一个类型的从属名称(即依赖于模板参数的名称),就需要它。
关于c++ - '*' token 模板化链表之前的预期构造函数、析构函数或类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602201/