2016-02-05 100 views
0

我正在实现与this one几乎相同的二进制树类。但是,在我的任务中,node结构必须是模板结构。因此,我改变了struct node到:类属性包含模板类的实例(错误C3857)

template <typename T> 
class node { 
public: 
    T data; 
    node<T> *left, *right; 
} 

到目前为止好,直到我添加了一个node实例btree作为成员变量:

class btree { 
    // ...... 
private: 
    template <typename T> 
    node<T> *root = NULL; // error 
} 

错误消息指出

C3857:多模板参数列表是不允许的。

我试图将root = NULL移动到btree的默认构造函数,也不起作用。

回答

2

您不能有模板变量声明。没有办法指定变量使用的类型。您可以让btree模板,并使用该类型的node

template<typename T> 
class btree { 
    // ...... 
private: 
    node<T> *root = NULL; // error 
} 

或指定在btree

class btree { 
    // ...... 
private: 
    node<some_type> *root = NULL; // error 
} 
想要什么类型的节点