我正在使用Microsoft Visual Studios,我已经创建了一个通用类List_Array。默认构造函数没有问题,但其他两个(重载)构造函数正在生成错误。
//List_Array.h
template<typename T>
class List_Array {
private:
int size; ...
T* data;
public:
List_Array<T>::List_Array();
List_Array<T>::List_Array(int);
List_Array<T>::List_Array(const T&, int);
...
};
template<typename T>
List_Array<T>::List_Array() { }
template<typename T>
List_Array<T>::List_Array(int s) {
this->size = s
this->data = new T[s];
}
template<typename T>
List_Array<T>::List_Array(const T& init, int s){
this->size = s;
this->data = new T[s];
for (int i = 0; i < s; i++){
this->data[i] = init;
}
}
我得到一个C2244'List_Array :: List_Array':无法将函数定义与现有声明匹配
非常感谢任何帮助!
答案 0 :(得分:0)
问题与模板或重载无关。你不需要List_Array<T>::
部分来定义类定义中的成员函数声明。即。
template<typename T>
class List_Array {
private:
int size; ...
T* data;
public:
List_Array();
List_Array(int);
List_Array(const T&, int);
...
};