C ++构造函数重载错误无法匹配函数定义

时间:2017-04-21 01:20:23

标签: c++ constructor compiler-errors overloading

我正在使用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':无法将函数定义与现有声明匹配

非常感谢任何帮助!

1 个答案:

答案 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);
     ...
};

LIVE