【发布时间】:2015-01-11 21:29:29
【问题描述】:
我有一个 Sprite 类,它有一个 int update(int key) 方法。
我还有另一个类 (SpriteManager),其中包含所有 Sprites 的列表。我想向这个类添加一个方法,该方法接受一个方法,并将一个 int 作为参数。然后我想遍历这个列表并在所有对象上调用该方法。但是,我找不到任何方法来做到这一点。我知道如何将函数作为参数传递,也知道如何在上下文之外调用对象的特定方法,但我不知道如何做到这两点。
使用此方法的示例如下:
sm.tellSpritesToDoSomething(Sprite::update, 42);
其中sm 是SpriteManager。
【问题讨论】:
-
你有 3 个选项:::std::function、::std::bind 和模板,随你喜欢。
-
你知道哪个最快吗?
-
通常是模板方法,因为它最简单。
-
如何使用模板?