[英]class member function return type
我在设计课程时遇到了问题;
class A
{
friend ostream& operator<<(ostream& os, const A rhs);
public:
A do()
{
A newobject;
newobject = *this/2
return newobject;
}
private:
vector<double>
}
假设我有一个A object{1.0,2.0,3.0}
那么object.do()
应该是{0.5,1.0,1.5}
但是当我想打印结果时
A object
cout<<object<<object.do();
它会导致一个错误,它似乎newobject
调用成员函数之后被删除object.do()
然后我改变了do()
函数
A& do()
{
return *this/2
}
然后cout<<object<<object.do();
结果是[0.5,1.0,1.5][0.5,1.0,1.5]
预期结果应为[1.0,2.0,3.0][0.5,1.0,1.5]
我有一些问题: 1.如何得到预期的结果? 2.对于第二个do()
函数,为什么cout
结果是[0.5,1.0,1.5][0.5,1.0,1.5]
。 do()
函数更改了 object 的成员,但我在调用object.do()
之前cout
object
。 我认为第二种情况应该得到预期的结果。 我想知道重载的operator<<
或其他部分是否有问题?
从
A& do()
{
return *this/2
}
并且您期望从[0.5,1.0,1.5]
获得[1.0,2.0,3.0]
,我假设您希望您的班级包装支持算术运算的向量? 运算符重载是你的朋友。 再给一个提示,如果您重载运算符/
使其将底层向量值除以 rhs 值, do()
将执行您想要的操作。 此外,您将不再需要do()
- 您可以调用cout << object/2
并且它会打印您想要的内容。 尝试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.