如何使用成员函数指针调用函数
我有一个类:
class A {
void test_func_0(int);
void run();
typedef void(A::*test_func_t)(int);
struct test_case_t{
test_func_t test_func;
} test_case[100];
};
现在我想在 run() 中调用 test_func():
void A::run()
{
test_case[0].test_func = &test_func_0;
test_case[0].*(test_func)(1);
}
无论我尝试什么组合,我的代码的最后一行都不起作用(编译错误)。
I have a class:
class A {
void test_func_0(int);
void run();
typedef void(A::*test_func_t)(int);
struct test_case_t{
test_func_t test_func;
} test_case[100];
};
Now I want to call test_func() inside run():
void A::run()
{
test_case[0].test_func = &test_func_0;
test_case[0].*(test_func)(1);
}
The last line of my code, doesn't work(compile error), no matter what combination I try.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用这个:
注意你有两个错误。第一个是如何形成成员函数指针。请注意,唯一的方法是使用
&ClassName::FuncName
无论您是否在类范围内。 &也是强制性的。第二个是,当您通过成员函数指针调用成员时,必须显式指定要调用成员函数的对象(在您的情况下为 A 类型)。在这种情况下,您必须指定
this
(由于这是一个指针,我们使用->*
而不是.*
)HTH
Use this:
Notice that you had 2 errors. The first one was how you formed the member-function-pointer. Note that the only way to do it is to use
&ClassName::FuncName
regardless of whether you're at class scope or not. & is mandatory too.The second is that when you call a member via a member function pointer, you must explicitly specif y the object (of type A in your case) on which to call the member function. In this case you must specify
this
(and since this is a pointer we use->*
rather than.*
)HTH
使用:
Use:
使用指向成员函数的指针调用成员函数:
演示:http://www.ideone.com/9o8C4
Member function call using pointer-to-member-function:
Demo : http://www.ideone.com/9o8C4