Frage zur templatespezialisierung
-
also ich habe eine kleine frage zur template spezialisierung
so sehen die templates aus (TemplDecl.h)
template<int I, const char* H, int N>class ZahlenFeld { .... } template<int I, const char *H, int N, const long* A> class DiskretFeld : public ZahlenFeld<I, H, N > { ..... }hier ein typedef
const char typeName[254] = "typename" ; const long ary[5] ; typedef DiskretFeld<1,typeName, 2, ary> beispielType ;und die verwendung in test.h
beispielType x ;vs6 spuckt mir folgende meldung aus
TemplDecl.h(185) : error C2971: 'ZahlenFeld' : Vorlagenargument 'H' : Ungueltige Adresse der lokalen Variablen 'H'
TemplDecl.h(233) : Siehe Deklaration von 'ZahlenFeld'
TemplDecl.h(356) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage '?$ZahlenFeld@$03$1H0?0' \\test.h(35) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'DiskretFeld<1,&char * typeName,2,&long const * const ary ime>' TemplDecl.h(191) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen. TemplDecl.h(356) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage '?ZahlenFeld@$03$1H$0?0'
Befehlszeilenwarnung D4028 : Fehler beim minimalen Neukompilieren, alles wird neu kompiliertbcb6 und VS2005 schlucken es
wenn ich das richtig sehe, kann VS6 auch mit aktuellstem sp nicht mit einem solchen Konstrukt umgehen. Gibt es einen trick den man ggf. anwenden könnte um es hinzukriegen?
-
Ebenso wie Variablennamen dürfen auch Template-Parameter sinntragende Bezeichnungen sein

-
arrays degenerieren hier nicht zu pointern (und sind folglich zu den template parametern inkompatibel). möglich wäre z.b. ein
typedef DiskretFeld<1,&typeName[0], 2, &ary[0]> beispielType ;
-
Any schrieb:
Ebenso wie Variablennamen dürfen auch Template-Parameter sinntragende Bezeichnungen sein

naja der code is nicht von mir ... ich muss ihn nur von nem anderen compiler auf vs zum laufen bringen. Und glaub mir den schlimmsten codebrocken hast du nicht gesehen. Allerdings hat dein kommentar nichts mit meinem Problem zu tun, sprich entweder erzähl mir was brauchbares oder lass es!
@camper
danke für die info, allerdings funkts so nichterror C2964: Ungueltiger Ausdruck als Vorlagenparameter
naja ich hab mich gestern noch bischen eingelesen und VS6 unterstützt ja diverse template funktionalitäten nicht. Mit .net gehts ja ...