函数指针指向成员函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

想设置一个函数指针作为类的成员,该类是指向同一类中另一个函数的指针。

在这个例子中,我想输出为“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())
}

但是在编译时失败了。为什么?

提问于
用户回答回答于

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

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
}
用户回答回答于

int (*x)()不是指向成员函数的指针。成员函数的指针是这样写的:int (A::*x)(void) = &A::f;

所属标签

可能回答问题的人

  • 优惠活动秘书

    0 粉丝2 提问7 回答
  • 天使的炫翼

    17 粉丝531 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • uncle_light

    5 粉丝518 提问5 回答

扫码关注云+社区

领取腾讯云代金券