Heim > Backend-Entwicklung > C++ > Warum erhalte ich die Meldung „Undefinierter Verweis auf den Vorlagenklassenkonstruktor' und wie kann ich das Problem beheben?

Warum erhalte ich die Meldung „Undefinierter Verweis auf den Vorlagenklassenkonstruktor' und wie kann ich das Problem beheben?

DDD
Freigeben: 2024-12-09 19:57:15
Original
488 Leute haben es durchsucht

Why Do I Get

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>;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage