我一直在尝试在c++中为我的新游戏创建按钮,我已经为它们创建了一个保存数据的类。我需要能够分配一个方法给每个按钮点击类。例如,假设我有十个按钮,我需要每个按钮在单击时输出一个不同的单词。
class button{
float position;
float scale;
void on_click();
};
button new_button;
new_button.on_click = {
std::cout << "HELLO" << std::endl;
}
我怎么才能让这样的东西工作呢?感谢您的回复。
发布于 2019-02-16 15:45:15
通过按字面意思处理问题来修复代码将使用std::function
成员,如下所示
#include <functional>
#include <iostream>
struct button {
using callback = std::function<void()>;
callback on_click;
button(callback f) : on_click(f) {};
void click() { on_click(); }
};
int main() {
button b1{[](){ std::cout << "b1\n"; }};
b1.click();
}
但是,如果唯一的区别是要打印的文本,则只需存储要使用按钮打印的字符串
#include <string>
#include <iostream>
struct button {
std::string message;
button(std::string s) : message(s) {};
void click() { std::cout << message; }
};
int main() {
button b1{"b1\n"};
b1.click();
}
https://stackoverflow.com/questions/54723520
复制