为了账号安全,请及时绑定邮箱和手机立即绑定

指向成员函数的函数指针

指向成员函数的函数指针

C++ C
aluckdog 2019-06-10 17:11:08
指向成员函数的函数指针我希望将函数指针设置为一个类的成员,它是指向同一个类中另一个函数的指针。我这么做的原因很复杂。在本例中,我希望输出为“1”。class A {public:  int f();  int (*x)();}int A::f() {  return 1;}int main() {  A a;  a.x = a.f;  printf("%d\n",a.x())}但这在编译上失败了。为什么?
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

语法不对。成员指针是与普通指针不同的类型类别。成员指针必须与其类的对象一起使用:

class A {public:
 int f();
 int (A::*x)(); // <- declare by saying what class it is a pointer to};int A::f() {
 return 1;}int main() {
 A a;
 a.x = &A::f; // use the :: syntax
 printf("%d\n",(a.*(a.x))()); // use together with an object of its class}

a.x还没有说明要调用哪个对象。它只表示要使用存储在对象中的指针。a..预演a另一次作为左操作数到.*运算符将告诉编译器调用函数的对象。


查看完整回答
反对 回复 2019-06-10
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

int (*x)()不是指向成员函数的指针。指向成员函数的指针如下所示:int (A::*x)(void) = &A::f;.


查看完整回答
反对 回复 2019-06-10
  • 3 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信