How to call a function using pointer-to-member-function

∥☆過路亽.° 提交于 2019-12-02 03:10:06

Use this:

void A::run() 
{   
    test_case[0].test_func = &A::test_func_0;
    (this->*(test_case[0].test_func))(1);
}

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:

(this->*test_case[0].test_func)(1);

Member function call using pointer-to-member-function:

 test_case[0].test_func = &A::test_func_0; //note this also!
(this->*test_case[0].test_func)(1);

Demo : http://www.ideone.com/9o8C4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!