1
私はMicrosoft Visual Studiosを使用しており、汎用クラスのList_Arrayを作成しています。デフォルトコンストラクタに問題はありませんが、他の2つの(オーバーロードされた)コンストラクタがエラーを生成しています。テンプレートのコンストラクタでC2244エラーオーバーロード
//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」を取得:既存の宣言
すべてのヘルプははるかに高く評価されるには、関数定義と一致することができません!
ありがとうございました!私はそれが問題を引き起こすことに気付かなかった。 –
@TylerHughesこれはテンプレート以外のクラスにも当てはまります。だから、この問題はここでテンプレートと過負荷とは関係がありません。 – songyuanyao