从多个头文件中的接口声明重写函数时如何避免重复代码?

How to avoid duplicate code when declaring overridden functions from interface in multiple header files?

我有多个 class 继承自一个接口。派生的 classes 的头文件几乎相等,因为每个都覆盖了所有纯虚函数:

struct IBase {
    virtual void fooA() = 0;
    virtual void fooB() = 0;  
};

struct Derived1 : IBase {
    void fooA() override; 
    void fooB() override;
};

struct Derived2 : IBase {
    void fooA() override; 
    void fooB() override;
};

void Derived1::fooA() {
    // implA1
}
void Derived1::fooB() {
    // implB1
}

void Derived2::fooA() {
    // implA2
}
void Derived2::fooB() {
    // implB2
}

我能否以某种方式避免为每个派生的 class 复制粘贴 void fooA() override; void fooB() override;

不可能避免为每个派生的 class 复制粘贴 void fooA() override; void fooB() override;,假设它们的实现确实不同(如您的评论 // implA1// implA2), 不求助于宏.

注意:如果Derived1::fooADerived2::fooA的实现相同,则可以避免重复。

如果 all 派生的 classes always 需要在之前、之后或之后调用的公共代码块他们自己的专业化的一部分(或者甚至只是通常),那么你可以提供它作为基础class中纯虚拟的实现(是的,纯虚拟可以有一个实现)。那么大家还是要实现功能(还是纯的),不过可以调用基础的class函数,普通的东东