c++ - 从另一个类更改一个类的数据成员的值
问题描述
#include <iostream>
using namespace std;
class B{
public:
int x;
void setx(int a){
x =a;
cout<<"Inside set "<<x<<endl;
}
void show();
};
void B::show(){
cout<<"inside show "<<x<<endl;
}
class A{
public:
void func();
void func2();
B bb;
};
void A::func(){
bb.setx(100);
bb.show();
}
void A::func2(){
bb.show();
}
int main()
{
A a;
B b;
a.func();
b.show();
a.func2();
return 0;
}
更改仅适用于 A 类,其中 B 类的实际值没有变化。我尝试了静态,但它显示错误。
我得到的输出: 内部设置 100 内部显示 100 内部显示 0 内部显示 100
我想要的输出: 内部设置 100 内部显示 100 内部显示 100 内部显示 100
解决方案
类不是对象。它是一种用户定义的数据类型,可以通过创建该类的实例来访问和使用。类的一个实例是一个对象。
现在,在您的main
函数中,当您A
通过编写实例化类对象时A a;
,的构造函数class A
实例化数据成员bb
(类型为B
)。B
然后,您可以在函数中创建另一个类型的对象main
,方法是编写B b;
. 这个类的实例化与你B
的数据成员无关。要获得所需的输出,您需要.bb
class A
a.bb.show()
要清楚:
struct Airplane {};
Airplane a1, a2, a3;
我有 3 架飞机,每架飞机都是class Airplane
, 3 个类型的对象的实例Airplane
。改变a1
并不意味着改变a2
和a3
。
推荐阅读
- c# - 使用 c# 中的文本文件替换 pubxml 中的参数
- html - Bootstrap 和 Laravel 列在移动版本上中断
- amazon-web-services - 无法访问正在运行的实例上的域
- php - PHP 将数组数据导出到 CSV 中的数据列中
- r - 将两个数据帧与条件进行比较
- python - Python - 在字典中查找列表的总和,然后找到具有最低值的列表
- python - 用 Python 打破子列表
- pdf - Firefox 的 about:config 在 Android 上用于设置 pdf 应用程序
- javascript - SASS:嵌套图像滑块
- c++ - Sqrt、cos、sin 没有在这个范围内声明?