簡體   English   中英

通過組合訪問數據成員

[英]accessing data member through composition

我的基類中有一個 struct obj 。 我不知道如何通過 Derv1 類(派生自基類)訪問結構體的數據成員。 我嘗試讓 Base 和 Derv1 成為 struct 的朋友 - 它仍然告訴我“數據成員是私有的”(它僅在 Base 中是私有的)。

例子 :

struct A{
    public :
        int total;
        //some stuff
};
class MyClass{ // [Base] class
    private:
      A var1;
};

class Derv1{
    private:
        //some stuff
        public void display_var1(Derv1 x){
            return x.var1.total;
        }  // trying to return the value of A.total
};

我希望這是有道理的,以便您可以幫助我......謝謝你,

我認為您必須將您的 Derv1 類擴展到 Base 類中:

class Derv1: public MyClass{

繼承基類的成員

首先,您必須確保Derv派生自MyClass

class Derv1 : public MyClass { ... };

然后,您需要找出顯示變量的最佳方式。

我的建議:

  1. 在基類中創建一個virtual成員函數。
  2. 覆蓋派生類中的函數。
  3. 確保在派生類實現中調用基類實現。

class MyClass { // [Base] class

    public:

        virtual void display() const
        {
           // Display var1 anyway you wish to.
        }

    private:
      A var1;
};

class Derv1 : public MyClass {

    public:

        virtual void display() const
        {
           // Call the base class implementation first
           MyClass::display():

           // Display anything else that corresponds to this class
        }

    private:
        //some stuff
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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