C++ C++;模板错误:在‘=’;代币

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

我试图创建一个函数来设置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 <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
的问题?我可以建议你去吗?模板是一个高级主题,如果没有坚实的基础,它们可能会成为一个令人头痛的问题。基于您对
&
的使用,我建议您首先实现一个完全没有模板的链表,以便学习基础知识。请注意,使用您的代码,您只能有一个按类型列出的列表…您以前是否询问过有关template
main
的问题?我可以建议你去吗?模板是一个高级主题,如果没有坚实的基础,它们可能会成为一个令人头痛的问题。基于您对
&
的使用,我建议您首先实现一个完全没有模板的链表,以便学习基础知识。