c++ - 带结构的模板

标签 c++ class templates struct binary-search-tree

我正在设计一个二叉搜索树,它允许用户输入任何数据类型的值,而不仅仅是 int
为了实现这一点,我正在尝试使用带有结构的模板. 我定义我的结构如下

template <class T>
struct node
{
    struct node *left;
    T info;
    struct node *right;
}*root;

现在我正在尝试在一个名为 BST(二进制搜索树)的类中使用它

template <class T>
class bst
{
    public: 
    void insert(node *,node *);
    void inorder(node *);
};

但是编译器抛出了错误, 'node< T >* root'的模板声明
我如何使用带有结构变量的模板?

最佳答案

不能在模板类声明之后声明root,因为无法推导模板参数,您可以:

template <class T>
struct node
{
    struct node *left;
    T info;
    struct node *right;
};

node <int> * root;

并且在使用node时需要指定模板参数类型,例如:

template <class T>
class bst
{
    public: 
    void insert(node<T>*, node<T>*);
    void inorder(node<T>*);
};

关于c++ - 带结构的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584508/

相关文章:

c++ - 编译时是否需要短路评估规则?

c++ - 退出时如何修复 OpenGL 堆栈损坏

C++ 将 DWORD 分解为字符

python - 如何在 Python 中打印我的对象名称

python - 使用类来组织共享输入的函数是否合适?

c++ - 仿函数基类的模糊重载

c++ - 模板嵌套私有(private)类作为 friend

c++ - 子类覆盖c++

c++ - 在不使用类名和范围解析运算符的情况下调用方法

python - 这些子类定义有何不同?