无法更改成员 object 的数据成员值

Can't change data members' values of member object

在这个示例程序中:

现在x调用func()前后的值不会变成7,有什么问题?

这是我的代码:

Class一个header

#ifndef A_H
#define A_H
#include "B.h"

class A
{
public:
    B getB();
    void func ();

private:
    B obj;
};

#endif // A_H

Class一个实现

#include "A.h"

B A :: getB ()
{
    return obj;
}

void A :: func ()
{
    getB().setX (7);
}

Class乙header

#ifndef B_H
#define B_H


class B
{
public:
    B ();
    int getX ();
    void setX (int);
private:
    int x;


};

#endif // B_H

ClassB实现

#include "B.h"

B :: B () : x(5)
{

}
void B :: setX (int x)
{
    this->x = x;
}
int B :: getX()
{
    return x;
}

main.cpp

#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;
int main()
{
    A instanceA;
    cout << instanceA.getB().getX() << "\n";
    instanceA.func();
    cout << instanceA.getB().getX();
    return 0;
}

输出:

5

5

这是 return 按值计算(obj 的副本而不是 obj 本身):

B getB()
{
    return obj;
}

对于return变量本身,你应该return一个引用它:

B& getB()
{
    return obj;
}