2013-12-14 51 views
1

這是我的嘗試:如何創建一個接受任何類型數據的向量的類?

template<typename T> class myClass { 
public: 
    myClass(std::vector<T> v) { 
    } 
    std::vector<T> myVect; 
}; 

,但是當我嘗試使用它:

myClass myClassInstance(myVect); 

它給:

error: missing template arguments before 'myClassInstance' 
+1

'myClass'是一個類模板。所以你需要用模板參數來實例化它。 – juanchopanza

+0

另請注意,類模板不是一個類。 'myClass '與'myClass '不是同一類型。所以你並沒有真正擁有「一個接受任何類型數據的向量」的類。 – juanchopanza

回答

2

不要忘記實際初始化您的成員變量以避免出現分段錯誤。

myClass(const std::vector<T>& v) : myVect(v) { 
    } 

int main() { 

    myClass<int> mc(std::vector<int>{1, 2, 3, 4, 5}); 
    std::cout << mc.myVect[0]; 
} 
2

在創建時需要指定模板的類型對象:

myClass<some_type> myClassInstance(myVect); 
相關問題