Warum „Undefinierter Verweis auf den Vorlagenklassenkonstruktor“?
Eine Vorlagenklasse definiert einen Entwurf zum Erstellen von Klassen mit unterschiedlichen Typen. Um eine Vorlagenklasse verwenden zu können, müssen Sie sie mit einem bestimmten Typ instanziieren. In Ihrem Fall haben Sie zwei Vorlagenklassen: nodo_colaypila und cola.
Der Compiler muss jedoch die Konstruktoren der instanziierten Klassen kennen, bevor er den Code kompiliert. Da Sie die Vorlagenklassen nicht explizit mit bestimmten Typen instanziieren, weiß der Compiler nicht, welche Konstruktoren er einbeziehen soll.
Zwei Lösungen:
Es gibt zwei Möglichkeiten Beheben Sie dieses Problem:
Lösung 1: Explizite Vorlage Instanziierung
Explizite Vorlageninstanziierungen am Ende von cola.cpp hinzufügen:
template class cola<float>; template class cola<string>;
Stellen Sie sicher, dass sich alle Vorlagendefinitionen in einer Übersetzungseinheit (.cpp-Datei) und in den expliziten Instanziierungen befinden befinden sich am Ende der Datei.
Lösung 2: Code in den Header verschieben Dateien
Verschieben Sie den Code, der die Mitgliedsfunktionen implementiert, aus cola.cpp und nodo_colaypila.cpp in die entsprechenden Header-Dateien .h. Dadurch werden die Funktionsimplementierungen für alle Übersetzungseinheiten verfügbar, die diese Header enthalten.
Zusammenfassung:
Mit dem expliziten Vorlageninstanziierungsansatz können Sie die Instanziierung bestimmter Typen steuern . Der „Move-Code-to-Header-Files“-Ansatz wird häufig verwendet und stellt die Implementierung allen Übersetzungseinheiten zur Verfügung. Die Wahl hängt von Ihren spezifischen Bedürfnissen und Projektanforderungen ab.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Meldung „Undefinierter Verweis auf den Vorlagenklassenkonstruktor' und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!