Error C2662, cannot convert ‘this’ pointer from ‘const class ’ to ‘class &’

class StockNode
{
	friend class StockTree;
private:
	Stock myStock;
	StockNode *left;
	StockNode *right;
public:
	StockNode();
	StockNode(Stock s,StockNode* l,StockNode *r):myStock(s),left(l),right(r){}
	StockNode (const StockNode &);
	Stock getStock() {return myStock;}
	StockNode *getLeft() {return left;}
	StockNode *getRight() {return right;}

};


StockNode::StockNode(const StockNode &node)
{
	myStock=node.getStock();
	left=node.getLeft();
	right=node.getRight();
}

上述的代码是导致错误的例子。错误主要的原因是const类型的对象(node)调用非const类型的方法(getStock(),getLeft(),getRight())导致的。

由于const对象在调用成员函数时,会将this指针强制转换成const this指针,它调用成员函数时会去找对应的const get函数,而编译器无法将非const类型的get函数转换成const类型的get函数,因此出现编译错误。

方法是将get函数转为const类型的函数。

Stock getStock() const {return myStock;}
StockNode *getLeft() const {return left;}
StockNode *getRight() const {return right;}

这样就没问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值