Heim > Backend-Entwicklung > C++ > Warum erzeugt mein C-Code den Fehler „Undefinierter Verweis auf den Vorlagenklassenkonstruktor'?

Warum erzeugt mein C-Code den Fehler „Undefinierter Verweis auf den Vorlagenklassenkonstruktor'?

Barbara Streisand
Freigeben: 2025-01-02 22:36:40
Original
293 Leute haben es durchsucht

Why Does My C   Code Produce an

Undefinierter Verweis auf den Template-Klassenkonstruktor

In diesem C-Code generiert der Compiler den Fehler „undefinierter Verweis auf cola(float):: Cola()". Dieser Fehler tritt auf, weil der Compiler die Implementierung des Konstruktors für die Vorlagenklasse cola nicht finden kann.

Antwort 1: Explizite Vorlageninstanziierung

Eine Lösung besteht darin, die explizit zu instanziieren Die Template-Klasse cola wird am Ende von cola.cpp eingefügt, was sie dazu zwingt, den konkreten Inhalt zu kompilieren Instanziierungen.

template class cola<float>;
template class cola<string>;
Nach dem Login kopieren

Antwort 2: Header-Datei-Einbindung

Alternativ kann die Implementierung der Template-Klasse in die Header-Datei cola.h verschoben werden. Dadurch wird sichergestellt, dass die Implementierung für alle Übersetzungseinheiten verfügbar ist, die die Header-Datei enthalten.

Grund für die Einbeziehung der Header-Datei

Durch das Einfügen der Implementierung in die Header-Datei wird die Notwendigkeit vermieden zur expliziten Instanziierung. Es garantiert, dass die Vorlagenklasse und ihre Mitgliedsfunktionen für jede Übersetzungseinheit verfügbar sind, die die Header-Datei enthält. Dieser Ansatz wird häufig für Vorlagenklassen verwendet, die in der gesamten Codebasis weit verbreitet sind.

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass nur eine Implementierung der Vorlagenklasse vorhanden ist in der gesamten Codebasis.
  • Die Implementierung der Template-Klasse muss nach allen Klassendefinitionen erfolgen.
  • Wenn die Template-Klasse deklariert ist In mehreren Header-Dateien sollte die Implementierung in einer separaten Header-Datei abgelegt werden, die in allen anderen Header-Dateien enthalten ist, in denen die Vorlagenklasse verwendet wird.

Das obige ist der detaillierte Inhalt vonWarum erzeugt mein C-Code den Fehler „Undefinierter Verweis auf den Vorlagenklassenkonstruktor'?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage