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

Default Constructor with Empty Brackets C++ Error

本文关键字:默认 构造函数 C++ 错误      更新时间:2023-10-16

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

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

关于这个声明

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

则它是具有返回类型CCD_ 1并且不具有参数的函数声明。它不是类型为Vector<int>的对象的定义。