我的代码与this thread中给出的代码类似。从左侧和右侧创建现有树木的新树
template<class T>
class BinarySearchTree
{
private:
struct tree_node
{
tree_node* left;
tree_node* right;
T data;
tree_node(const T & thedata, tree_node * l = NULL, tree_node * r = NULL)
: data(thedata), left(l), right(r) { }
};
tree_node* root;
public:
BinarySearchTree()
{
root = NULL;
}
}
在我的主要程序,有需要的:
我有两棵树:
BinarySearchTree<T> tree1;
BinarySearchTree<T> tree2;
我需要创建一个新的树:
根作为T的对象,left = tree1,right = tree2;
要做到这一点,我试图添加此构造函数:
BinarySearchTree(const T& x, tree_node* l, tree_node* r);
,并试图从主拨打:
BinarySearchTree<T> newTree(T object,tree1,tree2);
我明白这是不行的,但我应该怎么办?
编译错误:
错误C2664: 'BinarySearchTree :: BinarySearchTree(常量Ť&,BinarySearchTree :: tree_node *,BinarySearchTree :: tree_node *)':不能转换参数2从 'BinarySearchTree *' 来“BinarySearchTree :: tree_node *”
关于按参考电话的建议是正确的。但我的主要问题是不同的,如**编译错误** – 2011-05-12 00:44:39
中提到的问题是,你想调用CTOR,它将tree_node结构指针作为参数与BinarySearchTree指针。 我建议你设计你的代码,Tree_node结构在BinarySearchTree之外是不可见的,因为它显然是一个私有的嵌套类。所以你必须改变你的CTOR(构造函数)到我在文章中提到的东西。 – Constantinius 2011-05-12 07:42:54