【发布时间】:2012-06-16 05:19:15
【问题描述】:
尝试使用模板制作B inary S搜索T ree(简称BST)。
当我尝试创建 BST 的新实例时,我收到了一个意外错误。我希望解决方案不涉及指针,因为我希望将它们保持在最低限度。
现在我有:
template <typename Type>
class BST { // The binary search tree containing nodes
private:
BSTNode<Type> *root; // Has reference to root node
public:
BST ();
bool add (int, Type);
};
以及节点类型:
编辑:当我剪下代码以取消阻碍文本时,我忘记了构造函数,现在它被添加了
template <typename Type>
class BSTNode { // Binary Search Tree nodes
private:
int key; // we search by key, no matter what type of data we have
Type data;
BSTNode *left;
BSTNode *right;
public:
BSTNode (int, Type&);
bool add (int, Type);
};
EDIT2:这是实际的构造函数
template <typename Type>
BSTNode<Type>::BSTNode (int initKey, Type &initData) {
this->key = initKey;
this->data = initData;
this->left = NULL;
this->right = NULL;
}
我想尝试测试是否有任何工作/不工作
BSTNode<int> data = new BSTNode (key, 10);
我得到:BSTNode 之前的预期类型说明符。我不知道我做错了什么,但我希望有一件事是我不必使用数据作为指针。
BSTNode<int> data = new BSTNode<int> (key, 10);
也不起作用,似乎它认为< int > 是< & int> 并且不匹配
【问题讨论】:
标签: c++ templates pointers binary-search-tree