读书人

通过一个类给另一个类的成员赋值如何

发布时间: 2012-03-31 13:13:26 作者: rapoo

通过一个类给另一个类的成员赋值,怎么不成功?
求助,代码如下

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;} 

读书人网 >C++

热点推荐