类成员函数返回类型
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();
导致错误,似乎在调用object.do()
成员函数后删除了newobject
然后改变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()
函数改变了对象的成员,但我cout
object
之前调用object.do()
。我认为第二种情况应该会得到预期的结果。我想知道是否超载的operator<<
或其他部分有问题?
From
A& do()
{
return *this/2
}
和您期望从[1.0,2.0,3.0]
得到[0.5,1.0,1.5]
,我假设您希望您的类包装一个支持算术运算的向量?操作符重载是您的朋友。再给一个提示,如果您重载操作符/
,使其将底层向量值除以rhs值,那么do()
将按照您的要求进行操作。此外,您将不再需要do()
-您可以调用cout << object/2
,它将打印您想要的内容。试试。
相关文章:
- 如何获取std::result_of函数的返回类型
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++中函数的向量返回类型引发错误
- 检查函数返回类型是否与STL容器类型值相同
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 在 c++ 中将函数返回类型指定为模板参数
- 使用 SWIG 更改生成的 CS 函数中的返回类型
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 使用SFINAE来检测void返回类型函数的存在
- 模板返回类型函数如何在C++中工作
- 如何在返回类型函数模板的专用化中使用派生类型?( "couldn't infer template argument" )
- Bon appetit :从 int 返回类型函数在 main() 中打印字符串
- 在引用或指针返回类型函数上输入
- 在后面的返回类型函数语法中,auto关键字背后是否有意图
- 我可以在c++中重写字符串返回类型函数吗?