簡體   English   中英

將一個類的數據成員的值更改為另一類

[英]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無關的數據成員bbclass A 要獲得所需的輸出,您需要a.bb.show()

要清楚:

struct Airplane {};

Airplane a1, a2, a3;

我有3架飛機,其是每一個實例化class Airplane ,類型的3個對象Airplane 更改a1並不意味着更改a2a3

嘗試:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM