gpt4 book ai didi

c++ - 避免公共(public)类中的代码重复

转载 作者:搜寻专家 更新时间:2023-10-31 00:43:59 25 4
gpt4 key购买 nike

我有一个回调函数,叫做

MyCallBack(int type)

我有 3 个类 B、C 和 D 从 A 派生,具有通用方法名称目前我的代码是这样的

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com