【发布时间】:2017-07-27 19:45:42
【问题描述】:
我有一个 std::function 指向一个函数。在这个函数中,我将指针更改为另一个函数。
std::function<void()> fun;
void foo() {
std::cout << "foo\n";
}
void bar() {
std::cout << "bar\n";
fun = foo;
}
int main() {
fun = bar;
fun();
fun();
}
我看不出有任何问题,而且效果很好(请参阅here),但是我不确定这样做是否合法。有什么我想念的吗?可能在 c++ 标准草案中(我很快查了一下,但到目前为止什么也没看到)。
【问题讨论】:
-
这没有错。就是这样。
-
合法但风格不好,因为全局变量的状态难以控制(无论如何你都应该尽量避免)。
-
我有一个小游戏项目,我使用
std::function作为主循环回调(称为 60 次/秒)并分配给不同的方法来更改游戏状态(菜单选择、播放、暂停、等等。)。它运行良好。 -
@Aziuth 谢谢,但在实际代码中
fun、foo和bar是一个类的成员。我发布的代码应该只是代表功能。
标签: c++ c++11 std-function