對不起措辭錯誤的標題。Boost綁定和提升功能,將參數存儲在一個向量中,然後執行它們
我一直在瀏覽文檔,但我找不到任何可能解決此問題的東西。
基本上我想在向量中存儲幾個帶有參數的function1<void, void*>
,然後在稍後階段執行它們。
這是我想要完成的任務:
typedef boost::function1<void, void*> Task;
Vector<Task> mScheduledTasks;
int MyArg = 5;
void SomeTask(void* arg)
{
// ....
}
void AddSomeTasks()
{
// nevermind that MyArg is globally accessible
for (int i = 0; i<5; i++)
mScheduledTasks.push_back(boost::bind(&SomeTask, _1), (void*)&MyArg);
}
void ExecuteTask()
{
Task task = mScheduledTasks.front();
task();
}
現在正在執行的任務(),它希望我傳遞一個說法,但我在AddSomeTasks過去了嗎?爲什麼不使用它?或者我有missunderstod使用boost :: bind?
感謝
是的,那正是我想要的!還有一件事,如果SomeTask是一個成員函數,那麼語法會是什麼樣子呢? – KaiserJohaan
如果它是一個成員函數,你應該先綁定對象:'boost :: bind(&Class :: SomeTask,&object,(void *)&MyArg)'(假設'object'類型爲'Class') – artm