首页 > 解决方案 > 通过组合访问数据成员

问题描述

我的基类中有一个 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
};

我希望这是有道理的,以便您可以帮助我..谢谢您,

标签: c++objectstruct

解决方案


首先,您必须确保它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
};

推荐阅读