请教一个重载函数指针问题

ivytin 2016-04-18 10:18:22
class A {
private:
void foo(int n) {};
public:
void foo() {};
};

int main(int argc, char *argv[]) {
A a;
auto pfun = (void (*) ())a.foo; // A::foo(int) is inaccessible
}


请问有办法取到A::foo()的指针吗?
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivytin 2016-04-18
  • 打赏
  • 举报
回复
引用 1 楼 iyomumx 的回复:
用 static_cast<void (A::*)()>(&A::foo)
不好意思,我被IDE的提示误导了,其实哪怕不转型都可以取指针的,只要函数签名正确。 感谢回复!
ivytin 2016-04-18
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
指向类成员函数的指针并非是普通的函数指针!
感谢版主指出问题!
paschen 版主 2016-04-18
  • 打赏
  • 举报
回复
指向类成员函数的指针并非是普通的函数指针!
paschen 版主 2016-04-18
  • 打赏
  • 举报
回复

void (A::*pfun)() = &A::foo;
iyomumx 2016-04-18
  • 打赏
  • 举报
回复
用 static_cast<void (A::*)()>(&A::foo)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧