我一直在尝试用c ++为我的新游戏创建按钮,并且为它们创建了一个包含数据的类。我需要能够为每个按钮单击类分配一个方法。例如,假设我有十个按钮,我需要每个按钮在单击时输出一个不同的单词。
class button{
float position;
float scale;
void on_click();
};
button new_button;
new_button.on_click = {
std::cout << "HELLO" << std::endl;
}
我如何使类似的东西起作用? 感谢您的任何答复。
答案 0 :(得分:0)
按字面意义解决问题将像使用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();
}