我不知道为什么它在创建类Vector时会崩溃。请帮忙。在这个程序中,我想将任何类型的元素添加到数组中。我使用eclipse与Cross gcc,Ubuntu
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
答案 0 :(得分:1)
您需要将成员函数定义(包括构造函数定义)放在定义模板类的同一标头中。
至于这句话
// here i create Vector v, if i put Vector<int> v() i don't get error
Vector<int> v();
然后它是一个函数声明,它具有返回类型Vector<int>
并且没有参数。它不是Vector<int>
类型对象的定义。