c++操作符重载问题
p11*p12;p13=p11;可以过但是组合起来p13=p11*p12不能过了,为什么谢谢大家一共是以下两点没有注意到1:这里编不过的原因主要是:*返回的是一个对象而=...
p11*p12;
p13=p11; 可以过
但是组合起来
p13=p11*p12
不能过了,为什么
谢谢大家
一共是以下两点没有注意到
1:这里编不过的原因主要是:*返回的是一个对象而=要的是一个引用
2:关于const: 在一个加了const限定符的成员函数中,不能够调用 非const成员函数。int People::getAge() s要加const 谢谢ckpyn的帮助 展开
p13=p11; 可以过
但是组合起来
p13=p11*p12
不能过了,为什么
谢谢大家
一共是以下两点没有注意到
1:这里编不过的原因主要是:*返回的是一个对象而=要的是一个引用
2:关于const: 在一个加了const限定符的成员函数中,不能够调用 非const成员函数。int People::getAge() s要加const 谢谢ckpyn的帮助 展开
4个回答
展开全部
这个错误的意思是:
在一个加了const限定符的成员函数中,不能够调用 非const成员函数。
你的操作符重载operator*中,要将重载函数定义为const,即
People People::operator*(const People &p1) const { //为了防止错误修改参数,形参部分也要
//添加const
People p2;
p2.age=this->getAge()*p1.getAge();
p2.setSex(1);
//return People(1,2); //既然前面修改了对象p2的值,这里应该返回p2
return p2;
}
如果满意,欢迎采纳,谢谢
如有疑问,欢迎追问。
在一个加了const限定符的成员函数中,不能够调用 非const成员函数。
你的操作符重载operator*中,要将重载函数定义为const,即
People People::operator*(const People &p1) const { //为了防止错误修改参数,形参部分也要
//添加const
People p2;
p2.age=this->getAge()*p1.getAge();
p2.setSex(1);
//return People(1,2); //既然前面修改了对象p2的值,这里应该返回p2
return p2;
}
如果满意,欢迎采纳,谢谢
如有疑问,欢迎追问。
展开全部
p13 = p11*12不能过得原因是 operator*返回的是临时变量,而你opertor=操作需要的是引用变量。会让编译器找不到需要的operator=操作。建议在operator=参数上加上const。或者让operator*操作返回引用即可。
更多追问追答
追问
operator=参数上加上const 报这个错People::getAge()' discards qualifiers是什么原因啊?还有怎样operator*操作返回引用?
追答
你的实现中operator*不能返回引用。你可以改opertor=,参数变成const People& p1。并且你的getAge函数需要加上const。例如getAge()const{}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试着将
“friend tmat<T> operator * (tmat<T> a, tmat<T> b);“
改为:
friend tmat<T> operator * (const tmat<T>& a, const tmat<T>& b);
记得在函数声明和实现的地方都这样改,应该就可以了。
vC6的检查是相当宽松的。
是否可以解决您的问题?
“friend tmat<T> operator * (tmat<T> a, tmat<T> b);“
改为:
friend tmat<T> operator * (const tmat<T>& a, const tmat<T>& b);
记得在函数声明和实现的地方都这样改,应该就可以了。
vC6的检查是相当宽松的。
是否可以解决您的问题?
追问
但是这样改
People People::operator *(const People &p1)
报这个错
passing `const zbl_namespace::People' as `this' argument of `int zbl_namespace::People::getAge()' discards qualifiers
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
地址不能运算
追问
用的不是地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询