C++:如何 return 指向非静态成员函数的指针?
C++: How to return a pointer to a non-static member function?
我想做这样的事情:
typedef int(A::*f_ptr)(int);
class A
{
int f1(int a){ /*do something*/ }
int f2(int a){ /*do something else*/ }
f_ptr pick_f(int i)
{
if(i)
return this->f1;
return this->f2;
}
}
原因是我希望 class A 的实例保存某些有用的变量,然后根据用户输入选择我需要的成员函数。但这不起作用,因为我得到了 "a pointer to a bound function can only be used to call the function"。我如何编写一个 returns 指向非静态成员函数的指针的函数?
你需要return成员函数的地址,像这样:
f_ptr pick_f(int i)
{
if(i)
return &A::f1;
return &A::f2;
}
或等效的简洁版本:
f_ptr pick_f(int i)
{
return i ? &A::f1 : &A::f2;
}
我想做这样的事情:
typedef int(A::*f_ptr)(int);
class A
{
int f1(int a){ /*do something*/ }
int f2(int a){ /*do something else*/ }
f_ptr pick_f(int i)
{
if(i)
return this->f1;
return this->f2;
}
}
原因是我希望 class A 的实例保存某些有用的变量,然后根据用户输入选择我需要的成员函数。但这不起作用,因为我得到了 "a pointer to a bound function can only be used to call the function"。我如何编写一个 returns 指向非静态成员函数的指针的函数?
你需要return成员函数的地址,像这样:
f_ptr pick_f(int i)
{
if(i)
return &A::f1;
return &A::f2;
}
或等效的简洁版本:
f_ptr pick_f(int i)
{
return i ? &A::f1 : &A::f2;
}