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>;
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:
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!