如何简化仅函数调用存在差异的C++成员函数
可以精简,用函数指针就能搞定
你这种场景完全可以把重复逻辑抽成一个通用函数,核心是用函数指针把不同的那行调用作为参数传进去,具体步骤如下:
先定义对应类型的函数指针
假设你的one()、two()这些函数都是无参数、返回int类型的,先声明函数指针类型:typedef int (*ActionFunc)();编写通用的核心函数
把原来重复的逻辑都放进这个函数里,把不同的函数调用换成传入的函数指针:int doSomething(ActionFunc action) { // ... 原来的通用逻辑 ... action(); // 这里替换原来的one()、two() // ... 原来的通用逻辑 ... }调用通用函数
原来的doSomethingOne()和doSomethingTwo()直接用通用函数替代:// 替代doSomethingOne() doSomething(one); // 替代doSomethingTwo() doSomething(two);
如果你的one()、two()参数或返回值类型不一样,只要调整函数指针的定义就行,比如函数需要传一个int参数,就改成typedef int (*ActionFunc)(int);,通用函数里调用时也传对应参数即可。
内容的提问来源于stack exchange,提问作者quant
相关产品推荐
相关产品推荐

