私はstd::function
を指しています。この関数の中で、ポインタを別の関数に変更します。呼び出された関数の中でfunctionpointer(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++標準のドラフト(私はすぐにチェックしましたが、これまで何も見ませんでした))?
これは何も問題はありません。それでおしまい。 –
法的ではあるが、スタイルが悪い。グローバル変数の状態を制御するのが難しいため(これは避けようとするべきである)。 – Aziuth
私はメインループコールバック(60回/秒と呼ばれる)として 'std :: function'を使用し、ゲーム状態(メニューの選択、再生、一時停止など)を変更するためのさまざまなメソッドに割り当てるミニゲームプロジェクトを持っています。それは正常に動作します。 – tntxtnt