链接启动和函数c ++时获取对象的引用

时间:2016-01-09 23:19:44

标签: lambda sfml

我已经搜索了很长一段时间,并尝试了我能想到的一切。 我目前正在开发一款小游戏,它有几个按钮,我必须跟踪,所有这些按钮之间的唯一区别只是一个功能,包括点击时应该发生的事情。我当然可以创建几个继承自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问题,但我确信必须有一些比我想象的更好的方法。

任何帮助将不胜感激! :)

0 个答案:

没有答案