想象一下,你有一個類層次結構如下所示:建議如何從包含的類中調用在容器類中定義的回調函數?
class Robot
{
public:
void OnTaskCompleted() {}
private:
Task *m_pTask;
};
class Task
{
public:
virtual void DoTask() = 0;
};
class TidyUp : public Task
{
public:
void DoTask()
{
// When TidyUp task is compeleted invoke OnTaskCompleted() from here.
}
};
我需要調用OnTaskCompleted()
從TidyUp::DoTask()
。推薦的方法是什麼?
我想避免:
- 使OnTaskCompleted()靜態
- 傳遞機器人指針任務
誰打電話'DoTask'? – 2012-08-08 10:52:02
你可以在'std :: function'中傳遞'std :: bind(&Robot :: OnTaskCompleted,this)'。 –
Xeo
2012-08-08 10:52:32
@ AndreasBrinck-我現在編輯了我的代碼。 – jpen 2012-08-08 10:55:37