带空括号的默认构造函数 C++ 错误

Default Constructor with Empty Brackets C++ Error

我不知道为什么在创建 class 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

您需要将成员函数定义(包括构造函数定义)放在定义模板 class 的同一 header 中。

至于这个说法

// here i create Vector v, if i put Vector<int> v() i don't get error
Vector<int> v();

则为return类型Vector<int>且无参数的函数声明。它不是 Vector<int> 类型的 object 的定义。