Ich weiß nicht, warum es abstürzt, wenn ich Klasse Vector erstellen. Bitte Hilfe. In diesem Programm möchte ich einen beliebigen Typ von Elementen zu einem Array hinzufügen. Ich benutze Eclipse mit Kreuz gcc, UbuntuStandardkonstruktor mit leeren Klammern C++ Fehler
template<typename T>
class Vector{
public:
Vector();
void add(const T&);
private:
T *elem;
int cap;
int len;
};
template<typename T>
Vector<T>::Vector(){
len = 0;
cap = 30;
elem = new T[cap];
}
template<typename T>
void Vector<T>::(const T& m){
elem[len] = m;
len ++;
}
// Here I create Vector v, if I put Vector<int> v() I don't get error
Vector<int> v; //error "undefined reference to `Vector<int>::Vector()"
v.add(21); //error
Bitte geben Sie eine [mcve] an. – Barry
@Brian Es ist sehr lustig, dass Sie nicht "sehr interessante Funktionen" verwenden. Ich kann mir das nicht einmal vorstellen :) –
Der Compiler benötigt Sichtbarkeit der Template-Definitionen (sowohl die 'Vector' Klasse und seine Member-Funktionen) an dem Punkt, wo Sie' Vector 'verwenden möchten. Separate Kompilierung und Vorlagen spielen nicht gut zusammen. Platzieren Sie die Definition der Elementfunktionen in der Kopfzeile, die die Klasse deklariert, und stellen Sie sicher, dass Sie diese Kopfzeile im Code einschließen, der die Vorlage "Vector" verwenden muss. [Dies ist keine vollständige Antwort]. –
Peter