C++ ';节点';:使用类模板需要模板参数列表

C++ ';节点';:使用类模板需要模板参数列表,c++,visual-studio-2010,templates,C++,Visual Studio 2010,Templates,我正在进行一个BST树遍历,当我使用一个模板进行遍历时,我得到了一个错误。 非常感谢。 代码如下: #include <iostream> using namespace std; template<typename T> struct Node{ T data; Node*left; Node*right; }; template<class T>void PreOrder(Node* root){ if (root ==

我正在进行一个BST树遍历,当我使用一个模板进行遍历时,我得到了一个错误。 非常感谢。 代码如下:

#include <iostream>
using namespace std;
template<typename T> struct Node{
     T data;
    Node*left;
    Node*right;
};

template<class T>void PreOrder(Node* root){
    if (root == NULL) return;
    cout << root->data;
    PreOrder(root -> right);
    PreOrder(root -> left);
}
#包括
使用名称空间std;
模板结构节点{
T数据;
节点*左;
节点*右;
};
templatevoid预订单(节点*根){
if(root==NULL)返回;
cout数据;
预订单(根->右);
预订单(根->左);
}
我总是会得到一个错误,说“Node”:使用类模板需要模板参数列表
提前感谢您的帮助。

您应该在
预订单()函数签名中使用
节点
语法(而不仅仅是
节点
):

template<class T> void PreOrder(Node<T>* root) {
模板无效预订单(节点*根){
此代码可以使用MSVC10进行良好编译:

#include <iostream>
using namespace std;

template<typename T> struct Node {
    T data;
    Node*left;
    Node*right;
};

template<class T>void PreOrder(Node<T>* root) {
    if (root == NULL) return;
    cout << root->data;
    PreOrder(root->right);
    PreOrder(root->left);
}

int main() {
}
#包括
使用名称空间std;
模板结构节点{
T数据;
节点*左;
节点*右;
};
templatevoid预订单(节点*根){
if(root==NULL)返回;
cout数据;
预订单(根->右);
预订单(根->左);
}
int main(){
}

你的意思是:
templatevoid PreOrder(Node*root){
?顺便说一句,它应该是
const