因此,我正在研究各種各樣的遊戲引擎,並且我一直在爲這個問題奮鬥了一段時間。我不確定它是否是設計問題,或者我只是沒有必要的瞭解C++從指針向量到基類型,返回派生類型的第一個元素,作爲派生類型轉換
簡而言之,我有一個指向「BaseComponent」類型的指針向量。它由指向派生類,AComponent,BComponent等的指針組成。我想知道是否有一種優雅的方式來返回給定派生類型的向量中的第一個元素,並將它轉換爲正確的派生類型。在僞代碼:
BComponent * bComp = getFirstElementOfType(vectorOfComponents, BComponent);
而且它會自動地找到匹配放在第二個參數類型的第一個元素,如果在載體中沒有組件類型相匹配返回它澆鑄成正確的派生類型,或者爲null。我假設我們必須爲這樣的事情使用模板(如果可能的話),但是經過一段時間的修改之後,我還沒有拿出任何能夠完成這項工作的東西。希望一切都有意義,謝謝你的時間。
遺憾,它沒有任何意義。返回類型應該是指針或引用 – 2014-10-10 07:20:38
聽起來就像你需要一個協變類型的返回類型。參考和指針可以幫助解決這個問題。你可能也想考慮'shared_ptr'這裏 – Niall 2014-10-10 07:32:54
你有幾個答案可以完成這個工作,但是,一般來說,如果你發現自己在做一些「動態演員,直到有東西粘住」,你就會遇到更深層次的問題。 RTTI和動態鑄造是昂貴的,並且你正在生產*遊戲引擎。更可能你應該在基類上有幾個虛擬方法,例如:'CanShoot()''CanMove()','IsScenery()'。 (這些似乎可能是遊戲對象的屬性。:-)) – 2014-10-10 08:53:31