코드는 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;
}
}
, 거기이 필요 :
내가 두 그루의 나무가 : AS를
루트 :
BinarySearchTree<T> tree1;
BinarySearchTree<T> tree2;
을 내가 함께 새로운 트리를 만들 필요가 T의 객체와 왼쪽 = tree1과 right = tree2;
내가이 생성자를 추가하려고 이렇게하려면 다음을 수행BinarySearchTree(const T& x, tree_node* l, tree_node* r);
메인에서 호출하려고 :
BinarySearchTree<T> newTree(T object,tree1,tree2);
을 나는이 작동하지 않습니다 이해하지만 어떻게해야합니까?
컴파일 오류 :
오류 C2664 : 'BinarySearchTree :: BinarySearchTree (const를 T &, BinarySearchTree :: tree_node의 *, BinarySearchTree :: tree_node *)': 변환 할 수 없습니다 매개 변수 2에서 'BinarySearchTree *'로 'BinarySearchTree :: tree_node의 *'모두의
참조로 인한 호출에 관한 제안이 정확합니다. 하지만 내 주요 문제는 다르다 ** 컴파일 오류 ** –
문제는, 당신이 BinarySearchTree 포인터와 함께 인수로 tree_node 구조 포인터를 취하는 그쪽으로 CTOR을 호출하고 싶어한다는 것입니다. 분명히 개인 중첩 클래스이므로 tree_node 구조가 BinarySearchTree 외부에서 볼 수 없도록 코드를 디자인하는 것이 좋습니다. 따라서 CTOR (생성자)를 내 게시물에서 제안한 것으로 변경해야합니다. – Constantinius