gpt4 book ai didi

c++ - 将函数和成员函数作为参数传递给另一个函数

转载 作者:行者123 更新时间:2023-11-30 05:37:54 24 4
gpt4 key购买 nike

我编写了一个库,允许通过检查接收到的 ASCII 字符将函数绑定(bind)到键事件。它非常适合在主代码中定义的非成员函数。它不适用于成员函数。我知道这是因为成员函数和非成员函数属于不同的类型。如何将以前未定义的类的函数传递给我的库中的这个函数?

类型定义:

typedef void (*tobind)();

有问题的功能:

void Keybinder::bind(char key,int mode,tobind func) {
switch(mode){
//execute depending on the event mode argument
case 0:
pressed[key] = func; //assign the function to the character pressed event
break;
case 1:
down[key] = func; //assing the function to the character down event
break;
case 2:
released[key] = func; //assign the function to the character released event
break;
}
}

最佳答案

如果您使用的是支持 C++11 语法的编译器,那么我建议使用 std::functionstd::bind方法。

你的 typedef 看起来像这样:

typedef std::function<void()> tobind;

你会像这样使用 std::bind :

auto func = std::bind(&Foo, arg1, arg2); // non-member usage
auto memFunc = std::bind(&A::MemberFoo, aInstance, arg1, arg2); // member-function usage

关于c++ - 将函数和成员函数作为参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084695/

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