我正在實施組件創建的工廠模式,並且希望爲工廠創建的每種類型的所有實例實現一個單身容器。理想情況下,這將是工廠中創建的每種類型的一個向量。C++工廠模式組件創建者與單身容器
如果我可以在向量中保留基類指針,但是很抱歉,我的用例會大大優先選擇所有實例連續存儲,而不是在新的位置放置它們以獲取儘可能多的緩存命中。
我考慮做這樣的事情了工廠地圖:
Map<string,pair<constructorFnPtr, vector<baseClass>>
這與它被強制轉換爲基類派生類丟失數據的問題。
我也在想,作爲這一對的第二個成員的向量指針是一個很好的方法來做到這一點,但我不知道如何實現這一點,同時仍然有不同的數據類型存儲在每個矢量。我不認爲這是可能的,因爲模板載體在技術上都是不同的類別。
有沒有辦法做我想做的事情?過去幾天我一直在試圖找出一些事情,但沒有運氣。
或者,如果有另一種好的方法來存儲向量(即作爲組件類的靜態成員),我也歡迎任何建議!
嘗試使用'dynamic_cast'獲取所需的類型,但是如果實例不是該類型,它將返回null或拋出:'dynamic_cast(myour_map [「instance」]。second [0])'if「實例「不是'TypeIWant',它將返回null或拋出(基於編譯器設置) –
Raxvan
2014-10-01 08:20:05
是的,它用於將實例從工廠中取出,但它不適用於將其放入實例向量中。我不想要一個指針向量,因爲每次迭代時從主內存中獲取它們的開銷都很高。 – 2014-10-01 09:15:06