Vorlagen und separate Kompilierung
und Das Lesen dieses Artikels hat mich neugierig gemacht, wie man mit beim Kompilieren umgeht eine .cpp-Datei mit Definitionen von Klassenvorlagen-Memberfunktionen.
Wenn der Compiler diese SimpleVector.cpp-Datei kompiliert, was wird er dann mit tun?
Code: Select all
--- SimpleVector.cpp ---
#include "SimpleVector.h"
#include
template
void SimpleVector::sortData() {
sort(data, data + currentSize);
}
template
int SimpleVector::size() { return currentSize; }
template
int SimpleVector::capacity() { return currentCapacity; }
Wenn jemand weiß, wie es funktioniert, würde ich mich über Hilfe freuen. Oder sagen Sie mir bitte etwas, das mir helfen könnte, das zu verstehen. Vielen Dank
Vielen Dank für alle Kommentare
Warum können Vorlagen nur in der Header-Datei implementiert werden?
Ich habe eine Antwort auf diesen Beitrag gesehen und habe sie unten auszugsweise zusammengestellt.
Bedeutung: Typname T wird während der Kompilierung ersetzt Schritt nicht der Verknüpfungsschritt, wenn ich also versuche, eine Vorlage zu kompilieren, ohne dass T als ersetzt wird konkreter Werttyp, der für den Compiler völlig bedeutungslos ist und daher kein Objektcode erstellt werden kann, da er nicht weiß, was T ist.
Hier heißt es, dass der Compiler keinen Objektcode erstellt, weil er nicht weiß, was T bedeutet.
Bedeutet dies, dass der Compiler Funktionen ignoriert, die sich auf T beziehen
Zum Beispiel SimpleVector ::sortData() oder SimpleVector::size() in SimpleVector.cpp
(und es tut mir leid für meine schlechten Englischkenntnisse)