gpt4 book ai didi

c++ - 来自类方法的回调 (C++)

转载 作者:行者123 更新时间:2023-11-28 08:13:52 27 4
gpt4 key购买 nike

我有一个按钮类。当我点击这个按钮时,它的 selected() 方法被调用。

//Button.cpp
void Button::selected(){
//Do Something
}

//Player.cpp
void Player::Jump(){
//Jump!
}

我还有一个 Player 类。我想这样做,以便当我单击按钮时,播放器方法的 Jump()叫做。我想我可以将 Player 类与按钮链接起来。但后来我意识到按钮类将有许多其他用途,而不是只是让我的球员跳。 (即:菜单选择器?让玩家移动?等)

所以我在考虑加入某种回调,但我对它们不太熟悉,而且我在理解我读过的一些教程时遇到了困难。

谁能告诉我如何使用 selected() 方法接收任何函数/方法作为参数并在方法体中执行它?

最佳答案

这是一个仿函数方法,您将函数作为参数传递:

template <typename functor_t>
void Button::selected(functor_t func){
// ...
func();
// ...
}

参数可以是函数指针,也可以是函数对象:

 struct functor {
void operator()() {
// stuff
}
};

void function() {
// stuff
}

使用指向成员的指针调用 void method():

struct foo {
void bar() {
std::cout << "hello";
}
};

template <typename class_t>
void function(class_t& c, void (class_t::* mp)()) {
(c.*mp)();
}

foo x;
function(x, &foo::bar);

关于c++ - 来自类方法的回调 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275742/

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