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

标签 c++ overriding code-duplication

我有多个从接口(interface)继承的类。派生类的头文件几乎相等,因为每个都覆盖了所有纯虚函数:

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
}

我能以某种方式避免复制粘贴void fooA() override; void fooB() override;对于每个派生类?

最佳答案

无法避免复制粘贴 void fooA() override; void fooB() override;对于每个派生类,假设它们的实现确实不同(如您的评论 // implA1// implA2 所示),而不使用宏。

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

关于c++ - 从多个头文件中的接口(interface)声明重写函数时如何避免重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251217/

相关文章:

java - 如何重构这个验证方法

c++ - fputs() 中的段错误(核心已转储)

c++ - asio 和 "streaming server"

java - 被覆盖的方法可以在返回类型上有所不同吗?

arrays - 我可以快速覆盖下标吗?

java - 这部分代码是什么

c# - 如何清理此代码以消除重复?

c++ - 为什么基本的镜面反射着色是流体,而不是锯齿状的?

c++ - 未实现的纯虚方法

c++ - 缓解 "type-validate then use"代码重复模式