J'utilise Microsoft Visual Studios et j'ai créé une classe générique List_Array. Il n'y a pas de problème avec le constructeur par défaut, mais les deux autres constructeurs (surchargés) génèrent l'erreur.C2244 Erreur avec la surcharge du constructeur de modèle
//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;
}
}
je reçois un C2244 « List_Array :: List_Array »: incapable de faire correspondre la définition de fonction à une déclaration existante
Toute aide est très appréciée!
Merci! Je n'avais pas réalisé que cela causerait un problème. –
@TylerHughes Notez que ceci est également vrai pour les classes non-template. Donc, le problème n'a rien à voir avec le modèle et la surcharge ici. – songyuanyao