永发信息网

如何在c++中声明指向对象的成员函数的函数指针?

答案:3  悬赏:50  手机版
解决时间 2021-03-19 20:45
  • 提问者网友:辞取
  • 2021-03-19 11:38
如何在c++中声明指向对象的成员函数的函数指针?
最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-03-19 12:17
并不存在指向对象成员的函数指针。


指向对象成员的指针称为成员指针,和函数指针并不等价,也就是不能当作函数指针使用。
struct A
{
 void foo()
 {

 }

 void goo()
 {

 }
};

void (A::*p)(); // p就是一个A类对象中没有参数返回void的成员函数的成员指针

int main()
{
 p = &A::foo; // 然后可以用这种写法对它赋值。
 p = &A::goo;

 int A::*q; // 数据成员同样可以有成员指针

 q = &A::x;
 q = &A::y;

 A a;

 (a.*p)(); // 成员指针的用法,必须和对象配套使用

 a.*q = 1;
}

对于必须使用函数指针的情况,可能需要获得静态成员函数的函数指针(静态成员函数是可以正常获得函数指针的)。并在调用时,把对象的地址作为参数传递。

全部回答
  • 1楼网友:蕴藏春秋
  • 2021-03-19 14:55
int main()
{ void (Test::*p)(int x);
Test test;
p=&test.show; //必须取地址
(test.*p)(5); // 调用必须关联test
getchar();
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯