根据姐妹类自动实现虚函数

时间:2013-03-30 15:03:43

标签: c++ c++11 multiple-inheritance virtual-functions

我是否可以使用成语来帮助实现依赖于基类存在的虚函数?例如,我有

class B {/* some abstract interface. */};

class A
{
public:
  virtual B* getB() {return nullptr;}
};

class C : public A, public B
{
public:
  B* getB() override {return this;}

  /* Implement B's interface here.*/
};

我通常想要像这样实现getB - 我可以以某种方式避免为所有叶子类重复这个吗?我可能有一些接口类,如B,

我知道一种方法是在C和B中实际上从A继承,但是如果可能的话,我想保持B与A不相关。

1 个答案:

答案 0 :(得分:4)

您可以在A:

中完成所有操作
class A
{
public:
    virtual B* getB() {return dynamic_cast<B*>(this);}
};

注意:virtual这里只是为了使A类具有多态性,这是使用dynamic_cast的要求。我们不打算覆盖getB()