C ++:如何返回指向非静态成员函数的指针?

问题描述 投票:1回答:1

我想做这样的事情:

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;
    }
}

原因是,我希望类A的实例保存某些有用的变量,以后再根据用户输入选择所需的成员函数。但这是行不通的,因为我得到“指向绑定函数的指针只能用于调用该函数”的信息。如何编写一个返回指向非静态成员函数的指针的函数?

c++ pointers member-function-pointers
1个回答
2
投票

您需要像这样返回成员函数的地址:

f_ptr pick_f(int i)
    {
         if(i)
              return &A::f1;
         return &A::f2;
    }
© www.soinside.com 2019 - 2024. All rights reserved.