首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-31 
通过一个类给另一个类的成员赋值,怎么不成功?求助,代码如下C/C++ code#include iostreamusing namespace

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

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

热点排行