有没有我可以用来帮助实现依赖于基类的虚函数的惯用法?例如,我有

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-是否可以以某种方式避免对所有叶子类重复此操作?我可能有一些接口(interface)类,例如B,

我知道做到这一点的一种方法是从C和B的A中虚拟地继承,但是我想尽可能使B与A无关。

最佳答案

您可以在A中完成所有操作:

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

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

关于c++ - 根据姐妹类自动实现虚拟功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15719953/

10-11 21:00