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

Automatically implement virtual functions depending on sister classes

本文关键字:实现 函数 姊妹      更新时间:2023-10-16

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

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无关,如果可能的话。

你可以用A:

class A
{
public:
    virtual B* getB() {return dynamic_cast<B*>(this);}
};

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