c++中const限定出错

chenzhuoxue chenzhuoxue 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

首先本人是在写一个二叉查找树中的查找出现的问题。

问题在代码中的 find函数的注释部分

部分代码如下:
typedef int T;

class Bstree //左子树小于节根, 右子树不小于根
{
public:
struct Node
{
T data; //树节点保存的数据
Node* L; //树节点的左子树的地址
Node* R; //树节点的右子树的地址
Node(const T& t = T()):data(t), L(), R(){}
};
typedef Node* tree;
private:
tree pRT; //保存树的根节点
int n; //保存树的节点数

public:
Bstree():pRT(NULL), n(){}
~Bstree(){clear();}
void insert(const T& t){ insert(pRT, t); n++; }
void travel()const{ travel(pRT); cout<<endl;}
int size()const { return n;}
void clear(){ clear(pRT); n = 0;}
/* 问题在这里
* 1. 当 tree& find(const T& t) const{ return find(pRT, t);}
* 因为我不修改数据所以加一个const限定,就出错,错误如下
* 2. 把const去掉就ok了,请问问什么呢?我又没有修改数据
*/
tree& find(const T& t){ return find(pRT, t);} //为什么加一个const就出错

public:
static void insert(tree& prt, const T& t);
void travel(const tree& prt) const;
void clear(tree &pst);
tree& find(tree &pst, const T& t);


};


错误:
e:\debuging\danei\danei\danei\bsorttree.cpp(34): error C2663: “Bstree::find”: 2 个重载没有“this”指针的合法转换

还有当我底下一个一个两个参数的find加一个const时:tree& find(tree &pst, const T& t) const;
错误:
e:\debuging\danei\danei\danei\bsorttree.cpp(34): error C2664: “Bstree::tree &Bstree::find(Bstree::tree &,const T &) const”: 不能将参数 1 从“const Bstree::tree”转换为“Bstree::tree &”
1> 转换丢失限定符

...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
chenzhuoxue
C++ Builder 13,871 成员 102,696 内容