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

C++中能否获取类首个成员函数地址?无名称调用方案问询

在C++中能否获取类的首个成员函数地址并调用?
class A {
public:
  A() {};
  int foo()
  {
    cout << "bar" << endl;
    return 0;
  }
};
int main()
{
  A().xxx();  //[2]
}

假设类中仅存在一个公开非静态成员函数,是否存在方法能在标注[2]的位置调用该函数,且不需要关注它的具体名称?

已知可以通过反射实现,但使用反射库会增加编译与运行时开销,想知道是否存在原生C++的实现方法(甚至是非可移植的hack方案)。

补充说明:

  • foo()的返回类型与形参数量可能不同,且该函数会频繁变更,但每个foo()的接口固定,因此无法通过通用xxx()函数(或函数模板)轻松转发参数。
  • 原本设想通过hack方式获取成员函数的实际地址并调用,目前已了解到:成员函数通常并非类的一部分,本质是带有隐藏this参数的全局函数,无法在运行时获取类的首个方法,但仍好奇是否有可行方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:20:36