gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:13:16 25 4
gpt4 key购买 nike

我想做这样的事情:

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 的实例保存某些有用的变量,然后根据用户输入选择我需要的成员函数。但这不起作用,因为我得到“指向绑定(bind)函数的指针只能用于调用函数”。如何编写返回指向非静态成员函数的指针的函数?

最佳答案

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

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

关于C++:如何返回指向非静态成员函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61978183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com