我努力讓自己在C++某種奇怪的多態性:發出奇怪的多態性
我的班兩棵樹:
國家< - 舞臺< - Stage_1,Stage_2,Stage_3
行動< - ActionState < - ActionState_Clear,ActionState_Begin,ActionState _ [...]
我想定義上Stage_1一些方法得到一個動作作爲參數:
State
{
virtual void exec_action(Action *tAct)
{
std:cout << "NOT IMPLEMENTED" << endl;
};
}
Stage_1
{
virtual void exec_action(ActionStage_Clear *tAct)
{
std::cout << "ACTION STAGE CLEAR" << endl;
}
virtual void exec_action(ActionStage_Begin *tAct)
{
std::cout << "ACTION STAGE BEGIN" << endl;
}
}
Action *pAct = new ActionStage_Clear();
State* pSta = new Stage_1();
**pSta->exec_action(pAct);**
我想讓它顯示'ACTION STAGE CLEAR',但它顯示'NOT IMPLEMENTED'。這是 - 我認爲 - 因爲沒有任何exec_action(Action *)的實現(儘管它的子類有一些)。
編輯:我會告訴你一下圖的一小部分: 我有舞臺和動作(s)。我將有一個ptr到Stage_1,2 ..和一個ptr到Action_1,2 ... 我想要調用Stage_n-> exec_action(Action_n)並且應該執行子的代碼:Action_1 :: exec_action (ACTION_1)。 (如果它沒有實現,它應該調用Action :: exec_action(Action))。
問題是
我怎樣才能解決這個問題? 有沒有其他方法可以使它工作?
謝謝,原諒我的英文。
這顯然不是你真正的代碼;請發佈您的實際代碼。 –
這是你真正的C++代碼嗎?我沒有得到你定義類的地方。另外,你在哪裏繼承? –
不是真正的代碼(顯然!),我現在發佈它 – josec89