Wie geht der Compiler beim Kompilieren mit generischen Typen um?C++

Programme in C++. Entwicklerforum
Guest
 Wie geht der Compiler beim Kompilieren mit generischen Typen um?

Post by Guest »

Ich habe untersucht, warum die Deklaration und Definition einer Template-Member-Funktion nicht separat erstellt werden sollte. und ich habe eine sehr gute Antwort gefunden.
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; }
Erstens sieht es so aus, als würde der Compiler alle Funktionen mit ignorieren. Ist das richtig?
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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post