【问题标题】:C++ how to call a parent class method from contained class?C ++如何从包含的类中调用父类方法?
【发布时间】:2009-05-03 22:57:51
【问题描述】:

我正在尝试从包含的对象调用 Parent 类方法,但对以下代码没有运气。标准的做法是什么?

我四处搜索,这似乎适用于继承的对象,但不适用于包含的对象。甚至称它为父类是否正确?还是叫 Owner 类?

class Parent{
private:
  Child mychild;

public:
  void doSomething();
}

class Child{
public:
  void doOtherThing();
}

void Child::doOtherThing(){
  Parent::doSomething();
}

【问题讨论】:

    标签: c++ class


    【解决方案1】:

    包含的对象对包含它的类没有特殊的访问权限,并且通常不知道它被包含。您需要以某种方式传递引用或指向包含类的指针 - 例如:

    class Child{
    public:
      void doOtherThing( Parent & p );
    };
    
    void Child::doOtherThing( Parent & p ){
       p.doSomething();
    }
    

    【讨论】:

      【解决方案2】:

      孩子与父类完全没有联系。您必须将“this”传递给孩子(可能在构造函数中)才能使其工作。

      【讨论】:

        【解决方案3】:

        如果孩子需要与父母交互,那么它需要一个对该对象的引用;目前,孩子还没有主人的概念。

        【讨论】:

          猜你喜欢
          • 2016-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-26
          相关资源
          最近更新 更多