我已经搜索了很长一段时间,并尝试了我能想到的一切。 我目前正在开发一款小游戏,它有几个按钮,我必须跟踪,所有这些按钮之间的唯一区别只是一个功能,包括点击时应该发生的事情。我当然可以创建几个继承自Button类的类。
但是我想尝试使用lambda来解决这个问题,我目前有一个包含所有按钮的向量。我遇到的问题是我无法获得对象的引用。
buttons.push_back(new Button(542, 270, 40, 30, "-")
->enableClick([this]() {this->setText("asd")};
我当然不能运行这个,因为“this”将引用我所在的对象,但我无法弄清楚如何以一种很好的方式做到这一点...... 我当然能做到
Button* button = new Button(462, 270, 40, 30, "-");
button->enableClick([button]() {button->setText("asd"); });
buttons.push_back(button);
然后我必须写3行代替1而不是它真的是一个HUGH问题,但我确信必须有一些比我想象的更好的方法。
任何帮助将不胜感激! :)