如何在C ++中使用基类接口指针调用特定于派生类的成员函数?

时间:2018-09-20 09:54:09

标签: c++ design-patterns polymorphism solid-principles

我有以下代码,

File: Interface.h
class Interface {
  public:
  virtual void method1() = 0;
};


File: Intermediate.h
class Intermediate : public Interface {
};


File: A.h
class A : public Intermediate {
  public:
  void methodSpecificToA() {
    cout << "methodSpecificToA in class A";
  }
  void method1() {
    cout << "implemented method1 in class A";
  }
};

File: B.h
class B : public Intermediate {
  public:
  void methdo1() {
    cout << "method1 is called in class B";
  }
};

int main() {
  Interface* i_ptr = new A();
  i_ptr->method1();
  return 0;
}

我的要求是,我想使用i_ptr调用函数methodSpecificToA()。但是我不能这样做,因为methodSpecificToA不是纯虚拟的,也不是在接口类中定义的。

那么如何在不向Interface类编写默认'methodSpecificToA()'的情况下做到这一点呢?

如果我将'methodSpecificToA()'当作纯虚拟的,则类B被迫实现了意外的'methodSpecificToA()'。

什么是最好的方法?

0 个答案:

没有答案