Der Compilerfehler „Undefinierter Verweis auf...“ für Template-Klassenkonstruktoren weist auf einen Mangel an expliziter Instanziierung hin Anweisungen für die spezifischen Vorlagenklassen, die im Programm verwendet werden. Dieses Problem tritt auf, weil der Compiler Vorlagencode erst dann automatisch kompiliert, wenn er explizit benötigt wird.
Anhängen expliziter Vorlageninstanziierungsanweisungen an das Ende der Implementierungsdatei (cola .cpp in diesem Fall):
template class cola<float>; template class cola<string>;
Fügen Sie zusätzlich die folgenden Zeilen hinzu nodo_colaypila.cpp:
template class nodo_colaypila<float>; template class nodo_colaypila<std::string>;
Dies zwingt den Compiler, die erforderlichen Vorlagenklassen zu kompilieren.
Verschieben Sie den Implementierungscode aus Cola .cpp und nodo_colaypila.cpp in cola.h bzw. nodo_colaypila.h. Dies gewährleistet die Verfügbarkeit von Funktionsdefinitionen in allen Übersetzungseinheiten, die die Vorlagenklassen verwenden.
Lösung 1:
Lösung 2:
nodo_colaypila<T><T>* ult, pri;
sollte sein:
nodo_colaypila<T>* ult, *pri;
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Undefinierter Verweis auf' für Vorlagenklassenkonstruktoren und wie kann ich diese beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!