带空括号的默认构造函数 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 的定义。
我不知道为什么在创建 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 的定义。