Ich verwende Microsoft Visual Studios und ich habe eine generische Klasse List_Array erstellen. Es gibt kein Problem mit dem Standardkonstruktor, aber die anderen zwei (überladenen) Konstruktoren erzeugen den Fehler.C2244 Fehler mit Template Constructor Overload
//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;
}
}
Ich bekomme eine C2244 ‚List_Array :: List_Array‘: nicht in der Lage Funktionsdefinition zu einer vorhandenen Deklaration
Jede Hilfe willkommen ist viel zu entsprechen!
Vielen Dank! Ich wusste nicht, dass das ein Problem verursachen würde. –
@TylerHughes Beachten Sie, dass dies auch für Nicht-Template-Klassen gilt. Das Problem hat also nichts mit Template und Überladung zu tun. – songyuanyao