You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化仅函数调用存在差异的C++成员函数

可以精简,用函数指针就能搞定

你这种场景完全可以把重复逻辑抽成一个通用函数,核心是用函数指针把不同的那行调用作为参数传进去,具体步骤如下:

  1. 先定义对应类型的函数指针
    假设你的one()、two()这些函数都是无参数、返回int类型的,先声明函数指针类型:

    typedef int (*ActionFunc)();
    
  2. 编写通用的核心函数
    把原来重复的逻辑都放进这个函数里,把不同的函数调用换成传入的函数指针:

    int doSomething(ActionFunc action)
    {
        // ... 原来的通用逻辑 ...
        action(); // 这里替换原来的one()、two()
        // ... 原来的通用逻辑 ...
    }
    
  3. 调用通用函数
    原来的doSomethingOne()和doSomethingTwo()直接用通用函数替代:

    // 替代doSomethingOne()
    doSomething(one);
    // 替代doSomethingTwo()
    doSomething(two);
    

如果你的one()、two()参数或返回值类型不一样,只要调整函数指针的定义就行,比如函数需要传一个int参数,就改成typedef int (*ActionFunc)(int);,通用函数里调用时也传对应参数即可。

内容的提问来源于stack exchange,提问作者quant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:39:50