我有一個std::function
指向一個函數。在這個函數裏,我將指針改爲另一個函數。在被調用的函數中更改函數指針(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
我有一個迷你遊戲項目,我使用'std :: function'作爲主循環回調(稱爲60次/秒),並將其分配給不同的方法來改變遊戲狀態(菜單選擇,播放,暫停等)。它運行良好。 – tntxtnt