如何解决无法更改成员对象的数据成员的值
在此示例程序中:
- 我创建了一个B类对象成员的 A类
- B类包含数据成员 x ,其中包含设置方法和获取方法
- B级的构造函数使用值5 初始化数据成员 x
- A类包含成员函数 func(),用于设置 B类的数据成员 x 的值值: 7
现在调用 func()之前和之后的 x 值都不会更改为 7 ,这是什么问题?>
这是我的代码:
A类标题
#ifndef A_H
#define A_H
#include "B.h"
class A
{
public:
B getB();
void func ();
private:
B obj;
};
#endif // A_H
A类实现
#include "A.h"
B A :: getB ()
{
return obj;
}
void A :: func ()
{
getB().setX (7);
}
B类头
#ifndef B_H
#define B_H
class B
{
public:
B ();
int getX ();
void setX (int);
private:
int x;
};
#endif // B_H
B级实施
#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
解决方法
这是按值返回的(obj
本身而不是obj
的副本):
B getB()
{
return obj;
}
要返回变量本身,您应该返回一个引用:
B& getB()
{
return obj;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。