有没有我可以用来帮助实现依赖于基类的虚函数的惯用法?例如,我有
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/