0
我不知道爲什麼當我創建類Vector時它崩潰了。請幫忙。在這個程序中,我想將任何類型的元素添加到數組中。我在Cross gcc上使用eclipse,Ubuntu具有空括號的默認構造函數C++錯誤
template<typename T>
class Vector{
public:
Vector();
void add(const T&);
private:
T *elem;
int cap;
int len;
};
template<typename T>
Vector<T>::Vector(){
len = 0;
cap = 30;
elem = new T[cap];
}
template<typename T>
void Vector<T>::(const T& m){
elem[len] = m;
len ++;
}
// Here I create Vector v, if I put Vector<int> v() I don't get error
Vector<int> v; //error "undefined reference to `Vector<int>::Vector()"
v.add(21); //error
請提供[mcve]。 – Barry
@布萊恩你不使用「非常有趣的功能」是非常有趣的。我甚至無法想象這個:) :) –
編譯器需要在您打算使用'Vector'的地方看到模板定義(包括'Vector '類和它的成員函數)。單獨的編譯和模板不能很好地協作。將成員函數的定義放在聲明類的頭文件中,並確保在需要使用Vector矢量模板的代碼中包含該頭文件。 [這不是一個完整的答案]。 –
Peter