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