我有從具有虛擬功能的Base類繼承的派生類。我使用智能指針(shared_ptr)爲了創建對象,因爲我想把對象添加到一個向量中。但我注意到我的代碼重複處理對象來完成某些任務,所以我認爲模板可能是解決方案來改進我的代碼。 這是我嘗試到目前爲止(沒有確切的代碼,簡化):C++一個類(不是對象)一個模板的參數
class Base{
public:
virtual ~Base(){}
virtual void display_message() = 0;
};
class DerivedA : public Base{
DerivedA(){}
};
class DerivedB : public Base{
DerivedB(){}
};
//THE template-
//<hold the smart pointer that points to different derived objects>
template<typename T1>
class HandleInstances{
private:
vector<T1> ObjectVector;
//the iterator
T1 sp_base;
public:
HandleInstance(const T1 & sp){
sp_base = sp; // set smart pointer
}
//somefunctions
//this is what i need to figure out
void AddToVector(){
ObjectVector.push_back(sp_base(new 'The derived class'));
}
};
的AddToVector功能是這裏的問題。爲了添加一個對象的元素,我必須做這個push_back(「智能指針」(新的「類」));.我如何讓模板接受類(不是對象)並將其實現爲push_back()的函數?
可否請你展示瞭如何使用你的類的實例 – 2012-08-16 21:18:52
好所有IM真正想要做的是分配?通用數據類型的函數push_back()。但我不知道如何使模板做到這一點。 – starhacker 2012-08-16 21:40:59