Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在'之前应进行构造函数、析构函数或类型转换*';标记模板化链表_C++_Pointers_Linked List - Fatal编程技术网

C++ 在'之前应进行构造函数、析构函数或类型转换*';标记模板化链表

C++ 在'之前应进行构造函数、析构函数或类型转换*';标记模板化链表,c++,pointers,linked-list,C++,Pointers,Linked List,我的问题真的很像。但是,我的实现的不同之处在于,我使用的是模板链接列表 这里是我得到错误的地方(第二行)。此函数的目的是返回指向列表中第k个位置的节点的指针 template <class T> List<T>::ListNode* List<T>::find(int k) { ListNode * curr = head; while(curr != NULL && k > 0) { curr = cur

我的问题真的很像。但是,我的实现的不同之处在于,我使用的是模板链接列表

这里是我得到错误的地方(第二行)。此函数的目的是返回指向列表中第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;
}
模板
列表::列表节点*列表::查找(int k)
{
ListNode*curr=头部;
while(curr!=NULL&&k>0){
当前=当前->下一步;
k--;
}
返回货币;
}
这就是我的列表的样子(由节点组成,存储任意类型的T数据)

模板
班级名单
{
私人:
类ListNode
{
公众:
ListNode();
ListNode(常数和数据);
ListNode*下一步;
ListNode*prev;
常数数据;
};

本质上,这与我链接到的问题相同,只是我的列表是模板化的。因此,在进行了修复另一个问题的更改后,我的代码仍然会抛出错误。您知道为什么会发生这种情况吗?

您需要使用
typename
关键字:

template <class T>
typename List<T>::ListNode* List<T>::find(int k)
{
    ...
}
模板
typename列表::ListNode*列表::查找(int k)
{
...
}

这让编译器知道
ListNode
是一种类型。当您有一个依赖于类型的名称(即依赖于模板参数的名称)时,就需要它。

您需要使用
typename
关键字:

template <class T>
typename List<T>::ListNode* List<T>::find(int k)
{
    ...
}
模板
typename列表::ListNode*列表::查找(int k)
{
...
}

这让编译器知道
ListNode
是一种类型。当您有依赖名称(即依赖于模板参数的名称)时,就需要它这是一种类型。

您可能还希望在此处包含错误的描述。发布错误和获取错误的准确行。您可能希望使用
std::list
而不是编写自己的。您的问题是不构建自己的错误的一个原因:STL版本已经过测试。您可能不希望数据是
const
。您可能确实希望
find
成为
const
List::find(int k)const
)您可能还希望在此处包含错误的描述。发布错误和获取错误的准确行。您可能希望使用
std::list
,而不是编写自己的。您的问题是不构建自己的错误的原因之一:STL版本已经过测试。您可能不希望数据是
const
。您可能确实需要t
find
成为
const
List::find(int k)const