C++ 用多态性解决代码重复问题

C++ 用多态性解决代码重复问题,c++,C++,假设有一个基类和两个派生类: struct Derive1 : public Base { func(TypeA arg) { // Common code part 1 specificFunc(arg); // Common code part 2 } specificFunc(TypeA arg) { // specific implementation } }; str

假设有一个基类和两个派生类:

struct Derive1 : public Base
{
    func(TypeA arg)
    {
        // Common code part 1

        specificFunc(arg);

        // Common code part 2
    }

    specificFunc(TypeA arg)
    {
        // specific implementation
    }
};

struct Derive2 : public Base
{
    func(TypeB arg)
    {
        // Common code part 1

        specificFunc(arg);

        // Common code part 2
    }

    specificFunc(TypeB arg)
    {
        // specific implementation
    }
};
这两个派生类都有一个方法
func()
,但参数类型不同。<代码>函数()/代码>的主体几乎是相同的,除了函数中间的某个地方,它们以不同的类型作为参数调用<代码>特定函数()/代码>。这两个派生类的
specificFunc()
具有完全不同的实现

什么样的设计可以避免重复使用
通用代码第1部分
通用代码第2部分


提取
公共代码第1部分
公共代码第2部分
不是一个选项,因为
Func()中有控制逻辑

请尝试使用Derive1和Derive2都从基继承的事实。也许您可以找到一种方法,使“公共部分1”和“公共部分2”成为基函数的一部分。

您可以将
公共部分1
公共部分2
分解出来,例如在普通函数或基类成员函数中。相反的是
func()
的公共函数(模板),其中提供了
specificFunc
作为参数。这是否意味着公共前/后代码不依赖于函数参数?@Klaus是的,这是正确的。但是调用
specificFunc()
是在一个相当复杂的控制逻辑中。