比方說,我想有一個指向std :: vector的指針的成員變量,但我不想指定它存儲的變量類型。我只想訪問那些獨立於實際泛型類型的函數。這是可能的與C + +?這樣的事情:任意類型(或任何其他模板類)的std :: vector指針
class Foo{
public:
void setVec(std::vector* someVec){
myVec = someVec;
};
int getSize(){
return myVec.size();
};
private:
std::vector* myVec;
};
int main(){
Foo foo;
vector<int> vec1;
vector<float> vec2;
foo.setVec(&vec1);
cout<<foo.getSize();
foo.setVec(&vec2);
cout<<foo.getSize();
}
注意:我不想模板美孚,我想只使用Foo的一個實例與不同類型的向量。
當然- 如果我可以改變類載體的話,我可以創建一個基類untemplated
class Ivector{
virtual int size()=0;
};
,然後從Ivector使
class vector<T> : public IVector...
繼承。但是如果我不能改變有問題的類並且模板類沒有這樣的模糊基類,我該怎麼辦?
謝謝!
強制性*爲什麼?*請詢問你正在試圖解決此問題的幫助,而不是一步,你覺得你需要去解決它。 – GManNickG 2010-10-21 02:18:09
好奇心。我正在瞭解模板類可以做什麼。所以現在我想知道如果我不知道他們的模板類型是否可以指向模板類。 – Mat 2010-10-21 02:23:46
模板類不是類類型,它的實例化是。很難回答一個無法解釋的問題。 – GManNickG 2010-10-21 02:24:40