C ++ - 合并类

时间:2015-01-25 20:46:26

标签: c++ inheritance

在我的项目中有5个类定义项目的配置参数。 在这5个类中的每一个中,参数都是相似的很大部分 - 只有名称略有不同。即在class1中我有paramA_1,在class2 paramA_2中...在class5 paramA_5中。

我无法重新设计这5个类,这对我来说是一些输入。

这个班的每个人都有一个儿子。我想为儿子创建一个基类,例如定义与几乎相似的配置参数(如上面的paramA_x)相关的行为。

代码示例:

// cannot edit these 2 classes
class configRegs_1 {
protected:
    int paramA_1;
};

class configRegs_2 {
protected:
    int paramA_2;
};

class class_1 : public configRegs_1 {
    void function();
};

class class_2 : public configRegs_2 {
    void function();
};

void class_1::function() {
    // do something with paramA_1
}

void class_2::function() {
    // do the same as class_1::function but using with paramA_2
}

这样做的最佳方法是什么?我在考虑一个中间类,它统一了共享参数:怎么做?

我想要一些

class configRegs_generic {
protected:
    int paramA;
};
class class_generic : public configRegs_generic {
    void function();
};

void class_generic::function() {
    // do something with paramA
}

class class_1 : public class_generic, public configRegs_1 {
    ...
};

class class_2 : public class_generic, public configRegs_2 {
    ...
};

提前多多感谢

1 个答案:

答案 0 :(得分:0)

我可能会创建一个设置包装类,它在类类型的容器(list / array / hash / map)中使用上面的类,并使用settings类(带有相应的getter和setter)。这样您就可以访问每个类参数:

configRegs_wrapper [x] - > paramA

  • 其中x是configRegs的数量。

如果这样的解决方案适合您,我可以用工作代码示例进行说明。