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();
