类属性包括模板类的实例(错误C3857)

时间:2016-02-05 17:26:25

标签: c++ visual-c++

我正在实现一个与this one几乎相同的二叉树类。但是,在我的任务中,node结构必须是模板化结构。因此我将struct node更改为:

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的默认构造函数,但也无效。

1 个答案:

答案 0 :(得分:2)

您不能拥有模板化变量声明。无法指定用于变量的类型。您可以将btree设为模板,并将该类型用于node

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

或在btree

中指定所需的节点类型
class btree {
    // ......
private:
    node<some_type> *root = NULL; // error
}