#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
答案 0 :(得分:0)
一个类不是一个对象。这是用户定义的数据类型,可以通过创建该类的实例来访问和使用。该类的实例是一个对象。
现在,在您的main
函数中,当您通过编写A
实例化类A a;
的对象时,class A
的构造函数实例化数据成员{{1} }(类型为bb
)。然后,通过编写B
在B
函数中创建另一个main
类型的对象。类B b;
的实例化与B
中的数据成员bb
没有关系。要获得所需的输出,您将需要class A
。
要清楚:
a.bb.show()
我有3架飞机,每架飞机都是struct Airplane {};
Airplane a1, a2, a3;
的一个实例,类型为class Airplane
的3个对象。更改Airplane
并不意味着更改a1
和a2
。
答案 1 :(得分:0)
尝试:
int main()
{
A a;
B b;
a.func();
a.bb.show();
a.func2();
return 0;
}
您在错误的对象上调用show()
。由于a
有自己的bb
,因此您需要使用a.bb
来查看更改。 b
中的main
是不同的对象(即使是同一类)。