這是一個關於如何實現我最近一直需要的一些問題的問題。我確信這有一個模式或共同的解決方案,即使我已經有了一個,我渴望瞭解更多。具有不同參數的派生類中的C++方法
假設我工作的遊戲中所有與遊戲本身相關的實體都是從「演員」類(如「障礙物」,「移動障礙物」,「子彈」和「大炮」)派生而來的。在遊戲中,所有這些實體都存儲在一個std::vector<Actor *>
矢量中,以便它們可以遍歷。
現在,讓我們假設每個「演員」在每回合可以「做」什麼,讓我們給他們一個方法,「行爲」。 Obstacle :: act會做的很少,Moving_obstacle :: act和Projectile :: act會移動它們並且「Cannon :: act」會創建一個新的子彈。這有點很有意義的純虛函數演員::行事,所以我又可以做這樣的事情:
std::vector<Actor *>::iterator b=myvectorofactors.begin(), e=myvectorofactors.end();
while(b < e)
{
*b->act();
b++;
}
,並讓他們所有的「演技」。那麼,迄今爲止這麼好......事情是,Cannon :: act可以有不同的原型或返回值(例如,存儲一個生成的拋射體,並將它放入向量中),而這個「小」差異打破了一切。
現在,我知道,從某些觀點來看這些方法重載各自完全不同的功能。我也知道,人們總是可以提前計劃並以足夠的遠見來解決問題......或者只能解決問題。
在這種情況下就在眼前,我只是用不同的獨特identificators每個派生Actor類,用它們轉換爲對應的類做的工作他們周圍。我相信我會再次遇到同樣的問題,我很想知道一些入門級解決方案。
提前感謝您的時間。
牆少,更多的示例代碼,請 – David
不能同意@戴夫,這是一個很好想出了問題。 – Nick
您可能需要查看[訪問者模式](http://en.wikipedia.org/wiki/Visitor_pattern)。 – Nick