Initialisieren einer statischen Variable innerhalb eines Template-Klasse
-
Weiss irgendwer wie man eine statische Variable innerhalb eines Klassentemplates initialisiert, wenn deren Typ als Template-Parameter uebergeben werden kann?
Im Header darf ich es nicht und im Cpp-File will er es auch nicht. Finds allerdings ungeschickt wenn man Pointer nicht initialisiert...
-
bei mir hats mal so geklappt, wenn ich mich recht erinnere.
template<typename Data> struct Counter{ static int c; Counter(){ ++c; } Counter(const COunter&){ ++c; } ~Counter(){ --c; } }; template<typename Data> int Counter<Data>::c=0;aber ich weiß jetzt nicht, ob dieses c nun für jede c++-datei, die dieses template benutzt, einzeln zählt oder fürs ganze projekt nur einmal.
-
Danke

Hatte ich vergessen
template<typename Data>hinzuschreiben.
-
volkard schrieb:
aber ich weiß jetzt nicht, ob dieses c nun für jede c++-datei, die dieses template benutzt, einzeln zählt oder fürs ganze projekt nur einmal.
Einmal für jeden Typ Data mit dem das Template instanziiert wird. Wobei es natürlich ältere Compiler gibt, die in diesem Punkt etwas kaputt sind

-
Supi dann hab ich jetzt genau das was ich haben wollte...
-
Mathias schrieb:
Supi dann hab ich jetzt genau das was ich haben wollte...
und ich auch. danke, Hume!
-
Ich nutze sowas auch in meinem Code.
Welche Compiler sind denn diesbezüglich kaputt?