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

C++类内成员函数指针调用方法求助

类内成员函数指针的正确调用方式

你的代码有两个核心问题需要修正,下面是完整的正确实现,再逐一说明关键点:

class A {
     typedef void(A::*Exec)(); // 定义指向无参无返回值成员函数的指针类型
     void Method(Exec exec)    // 接收该指针类型参数的方法
     {
          (this->*exec)();  // 通过当前对象调用成员函数指针
     }
     void SingleProcedure()
     {
          /* 代码实现 */
     }
     // 可添加更多同类型成员函数
     void AnotherProcedure()
     {
          /* 代码实现 */
     }
public:
     void Init()
     {
         // 正确传递成员函数指针:不要加括号
         Method(&A::SingleProcedure); 
         // 调用另一个成员函数示例
         Method(&A::AnotherProcedure);
     }
};

关键修正说明:

  • 传递成员函数指针:&A::SingleProcedure是正确写法,你原代码里的&A::SingleProcedure()会触发函数调用,传递的是函数返回值(而你的函数返回void,本身就错误),我们需要的是函数地址,因此不能加括号。
  • 调用成员函数指针:成员函数必须绑定到类实例才能执行,所以Method里要用(this->*exec)()的语法——this代表当前类的对象实例,->*是成员函数指针的专用调用运算符,外层括号是为了保证运算优先级正确。

如果需要调用更多同类型成员函数,只需要按同样方式传递对应的成员函数指针给Method即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:56:05