我有一个名为
的回调函数MyCallBack(int type)
我有 3 个从 A 派生的类 B、C 和 D,它们具有通用方法名称 目前我的代码是这样的
MyCallBack(int type){
if(type == 1 ){
B b;
b.perform();
}else if(type==2) {
C c;
c.perform();
}else if(type ==3){
D d;
d.perform();
}
有没有办法可以减少这段代码,例如
MyCallBack(int type){
Common object(type);
object.perform();
}
最佳答案
基本上,您需要的是多态性。
所有类 B
、C
、D
都应从抽象类(例如 SuperBase
)派生,并带有纯虚拟方法perform()
。
您的代码应该仅使用指向 SuperBase
的指针,其中包含实际具体类对象的地址。
一旦你完成了这个,根据所指向的对象的实际类型,将调用适当类中的方法。
这种方法的优点是没有硬编码的类型检查,并且使用 Open Closed principle 的松散耦合设计具有灵活性。 .
关于c++ - 避免公共(public)类中重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690118/