通过组合访问数据成员

时间:2019-03-30 02:54:24

标签: c++ object struct

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

我希望这有道理,以便您可以帮助我。 谢谢,

2 个答案:

答案 0 :(得分:0)

我认为您必须将Derv1类扩展为Base类:

class Derv1: public MyClass{

继承基类的成员

答案 1 :(得分:0)

首先,您必须确保Derv源自MyClass

class Derv1 : public MyClass { ... };

然后,您将需要找出显示变量的最佳方法。

我的建议:

  1. 在基类中创建一个virtual成员函数。
  2. 覆盖派生类中的功能。
  3. 确保在派生类的implementatin中调用基类的实现。

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
};