![](/img/trans.png)
[英]Access data member of a member function from one class to another class's member function
[英]change value of data member of one class from another class
#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
類的對象時A a;
, class A
的構造函數實例化數據成員bb
(類型B
)。 然后,通過編寫B b;
在main
函數中創建另一個類型B
對象B b;
。 類此實例B
無關的數據成員bb
在class A
。 要獲得所需的輸出,您需要a.bb.show()
。
要清楚:
struct Airplane {};
Airplane a1, a2, a3;
我有3架飛機,其是每一個實例化class Airplane
,類型的3個對象Airplane
。 更改a1
並不意味着更改a2
和a3
。
嘗試:
int main()
{
A a;
B b;
a.func();
a.bb.show();
a.func2();
return 0;
}
您在錯誤的對象上調用show()
。 由於a
擁有自己的bb
,因此您需要使用a.bb
來查看更改。 main
對象中的b
是不同的對象(即使是同一類)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.