通过一个类给另一个类的成员赋值,怎么不成功?
求助,代码如下
- C/C++ code
#include <iostream>using namespace std;class A{private: int i;public: void setValue(int v) { i=v; } int getValue() { return i; }};class B{private: A a;public: A getA() { return a; }};int main(){ B b; b.getA().setValue(1); cout<<b.getA().getValue()<<endl; return 0;}输出的值为未初始化的值,请问是怎么回事?
我依稀记得是函数拷贝构造方面的东西吧,但是C++PRIMER被人拿走没办法翻书,请大神指导!!
[解决办法]
b.getA()和b.a不是一个东西,它返回一个临时对象,这个临时对象是a的按值拷贝
[解决办法]
return a; 返回的值是一个复制变量,不是原来的引用。
[解决办法]
用引用返回吧
[解决办法]
- C/C++ code
public: A &getA() { return a; }
[解决办法]
- C/C++ code
class B{private: A a;public: A *getA() { return &a; }};int main(){ B b; b.getA()->setValue(1); cout<<b.getA()->getValue()<<endl; return 0;}