重新定义C ++类中的方法

时间:2019-02-16 13:25:11

标签: c++ class methods

我一直在尝试用c ++为我的新游戏创建按钮,并且为它们创建了一个包含数据的类。我需要能够为每个按钮单击类分配一个方法。例如,假设我有十个按钮,我需要每个按钮在单击时输出一个不同的单词。

class button{
    float position;


    float scale;

    void on_click();
};

button new_button;
new_button.on_click = {
    std::cout << "HELLO" << std::endl;
}

我如何使类似的东西起作用? 感谢您的任何答复。

1 个答案:

答案 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();
}