Änderung der Semantik zur Erzeugung von Templates

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Optionen für Templates - Index

Die BCC32- und BCCOSX-Compiler generieren für Template-Instanzen die folgenden Methoden:

  • Diejenigen Methoden, die tatsächlich verwendet werden
  • Virtuelle Methoden einer Instanz
  • Alle Methoden explizit instantiierter Klassen

Der Vorteil dieses Verhaltens liegt darin, dass bedeutend kleinere Objektdateien, Bibliotheken und Programmdateien - abhängig von der Häufigkeit des Einsatzes von Templates - erzeugt werden.

Wahlweise können Sie den '-J'-Schalter verwenden, um alle Methoden zu erzeugen (siehe Compiler-Optionen für Templates und C++-Compiler).

Alle expliziten Methoden einer Template-Instanz können auch generiert werden, indem Sie die Syntax zur Instantiierung von Templates verwenden, wie sie im Standard ISO/ANSI C++ definiert ist. Die Syntax lautet:

template-klasse klassenname<template-parameter>;

Das folgende STL-Beispiel weist den Compiler an, alle expliziten Methoden für die Klasse list<char> zu generieren, ungeachtet dessen, ob sie vom Benutzer-Code referenziert werden.

template class list<char>

Sie können auch eine einzelne Methode oder ein einzelnes statisches Datenelement einer Template-Klasse explizit instantiieren. Dadurch wird die Methode in der .OBJ-Datei generiert, auch wenn sie nicht verwendet wird.

template void classname <template parameter>:: methodname ();

Siehe auch