對不起這個奇怪的話題,但不知道如何正確綜合我的問題。這裏是問題:你如何處理這個問題(界面+模板+重用代碼)
我有一組類將包含類型的std :: vector。這是一個很好的候選人只是templatizing喜歡:
template <typename T>
class Container
{
T createObject() { T* obj=new T; _objects.push_back(obj); }
std::vector<T> _objects;
}
問題是當我需要這個容器存儲在一個異構的地圖。它們是一個模板,因此在初始化之前它們不存在。我曾考慮過從一個虛擬IContainer派生Container以獲得一個良好的起點,但正如您所看到的,createObject需要模板化,所以我可以將IContainers添加到hetrogenous地圖,但是我無法調用createObject()並不想做一個static_cast。任何人都可以爲此提出解決方案嗎?
在此先感謝, 阿馬拉爾。
該代碼沒有任何意義。假設`createObject`返回一個`T`,但沒有返回語句,`_objects`存儲`T`,但是你嘗試給它添加`T *`。 – GManNickG 2011-01-13 17:05:19