c++ 函数传递指向指针的引用 异常

c++ 函数传递指向指针的引用 错误在写二叉树,遇到这么个错误,先把代码贴出来://二叉树定义class BinaryTre

c++ 函数传递指向指针的引用 错误
在写二叉树,遇到这么个错误,先把代码贴出来:


//二叉树定义
class BinaryTree
{
public:
    BinaryTree(BinaryTreeNode* root = NULL );
    void CreateBinaryTree(BinaryTreeNode*& node);
private:
    BinaryTreeNode* root_;
};
//节点定义
class BinaryTreeNode{
public:
    BinaryTreeNode(BinaryTreeNode* parent= NULL,
                           BinaryTreeNode* lchild=NULL,
                           BinaryTreeNode* rchild= NULL
                          );
    ~BinaryTreeNode();

    BinaryTreeNode* parent();
    BinaryTreeNode* lchild();
    BinaryTreeNode* rchild();
    int key();
    void set_parent(BinaryTreeNode* parent);
    void set_lchild(BinaryTreeNode* lchild);
    void set_rchild(BinaryTreeNode* rchild);
    void set_key(int key);

private:
    BinaryTreeNode* parent_;
    BinaryTreeNode* lchild_;
    BinaryTreeNode* rchild_;
    int key_;
};
//创建二叉树
void BinaryTree::CreateBinaryTree( BinaryTreeNode*& node )
{
    int n;

    cout << "\ninput an integer: ";
    cin >> n ;
    if( n == 0 )
        node = NULL;
    else
    {
        node = new BinaryTreeNode();
        node->set_key(n);

        CreateBinaryTree( node->lchild());
        CreateBinaryTree( node->rchild());
    }
}


错误在CreateBinaryTree函数中两个递归调用,错误信息如下:

mingw32-g++.exe -Wall -fexceptions  -g     -c F:\c_c++\binary_search_tree\binary_tree.cpp -o obj\Debug\binary_tree.o
F:\c_c++\binary_search_tree\binary_tree.cpp: In member function 'void BinaryTree::CreateBinaryTree(BinaryTreeNode*&)':
F:\c_c++\binary_search_tree\binary_tree.cpp:38:41: error: no matching function for call to 'BinaryTree::CreateBinaryTree(BinaryTreeNode*)'
F:\c_c++\binary_search_tree\binary_tree.cpp:38:41: note: candidate is:
F:\c_c++\binary_search_tree\binary_tree.cpp:25:6: note: void BinaryTree::CreateBinaryTree(BinaryTreeNode*&)
F:\c_c++\binary_search_tree\binary_tree.cpp:25:6: note:   no known conversion for argument 1 from 'BinaryTreeNode*' to 'BinaryTreeNode*&'
F:\c_c++\binary_search_tree\binary_tree.cpp:39:41: error: no matching function for call to 'BinaryTree::CreateBinaryTree(BinaryTreeNode*)'


F:\c_c++\binary_search_tree\binary_tree.cpp:39:41: note: candidate is:
F:\c_c++\binary_search_tree\binary_tree.cpp:25:6: note: void BinaryTree::CreateBinaryTree(BinaryTreeNode*&)
F:\c_c++\binary_search_tree\binary_tree.cpp:25:6: note:   no known conversion for argument 1 from 'BinaryTreeNode*' to 'BinaryTreeNode*&'


之前参数是指针类型,没有编译错误,但是建树肯定是有问题,所以改为指向指针的引用类型,没发现有错啊,有点莫名其妙。也很久没写c++了,望高手帮帮忙 C++ 指针 codeblocks
[解决办法]
改成这样试试.

BinaryTreeNode*& lchild();
BinaryTreeNode*& rchild();