C++ C++;模板错误:在‘=’;代币
我试图创建一个函数来设置LinkedList的根节点。但是,当我运行以下代码时:C++ C++;模板错误:在‘=’;代币,c++,templates,struct,C++,Templates,Struct,我试图创建一个函数来设置LinkedList的根节点。但是,当我运行以下代码时: #include <iostream> using namespace std; template <typename K> struct Node { Node<K>* next; const K value; }; template <typename K> Node<K>* root = NULL; template <typen
#include <iostream>
using namespace std;
template <typename K>
struct Node {
Node<K>* next;
const K value;
};
template <typename K>
Node<K>* root = NULL;
template <typename K>
void SetRoot(const K &key) {
Node<K> new_node = Node<K> {NULL, key};
root = &new_node;
}
int main(int argc, char *argv[])
{
Node<int> n1 = Node<int> {NULL, 48};
SetRoot(n1);
return 0;
}
#包括
使用名称空间std;
模板
结构节点{
节点*下一步;
常数K值;
};
模板
Node*root=NULL;
模板
void SetRoot(常数K和键){
Node new_Node=节点{NULL,key};
root=&new_节点;
}
int main(int argc,char*argv[])
{
节点n1=节点{NULL,48};
毛根(n1);
返回0;
}
我在root=&new\u节点的行中得到这个错误代码>:
错误:“=”标记根=&new_节点之前缺少模板参数
但是,new\u节点
确实具有struct节点
的所有预期参数根
是一个,使用它时需要指定模板参数。e、 g
root<K> = &new_node;
// ^^^ specifying K which is the template parameter of SetRoot
root=&new\u节点;
//^^^^指定SetRoot的模板参数K
顺便说一句:new_node
是一个本地对象,当退出SetRoot
时,它将被销毁。在root
挂起之后。root
是一个参数,使用它时需要指定模板参数。e、 g
root<K> = &new_node;
// ^^^ specifying K which is the template parameter of SetRoot
root=&new\u节点;
//^^^^指定SetRoot的模板参数K
顺便说一句:new_node
是一个本地对象,当退出SetRoot
时,它将被销毁。之后,root
变为悬空。注意,对于您的代码,您只能有一个按类型列出的列表……您之前是否询问了有关模板main
的问题?我可以建议你去吗?模板是一个高级主题,如果没有坚实的基础,它们可能会成为一个令人头痛的问题。基于您对&
的使用,我建议您首先实现一个完全没有模板的链表,以便学习基础知识。请注意,使用您的代码,您只能有一个按类型列出的列表…您以前是否询问过有关templatemain
的问题?我可以建议你去吗?模板是一个高级主题,如果没有坚实的基础,它们可能会成为一个令人头痛的问题。基于您对&
的使用,我建议您首先实现一个完全没有模板的链表,以便学习基础知识。