我正在设计一个二叉搜索树,它允许用户输入任何数据类型的值,而不仅仅是 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/