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

标签 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: multiple template parameter lists are not allowed.

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

最佳答案

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

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

或者在btree

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

关于c++ - 类属性包括模板类的实例(错误 C3857),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230017/

相关文章:

c++ - Visual Studio 在调试时随机启动断点

c++ - 为什么我可以在初始化后重新绑定(bind)引用?

file - MFC:在 SDI 应用程序中禁用新建文件和保存文件功能

c++ - 关于消息处理系统的建议

c++ - 我收到一段代码的警告,但 bjarne stroustrup 的 c++ 书说它应该是一个错误。这里是什么?

c++ - 不使用configure_file时如何使用CMake生成C++代码?

c++ - 这个 CComSafeArray 用法不好吗?

c++ - 我不知道如何处理我的非默认构造函数中传递的指针

visual-studio - Visual Studio 生成文件项目未在编辑器中显示错误

c++ - 如何将路径作为参数传递给 vc++ 中的第二个应用程序?