Templateklasse als Klassenvariable, Problem
-
Hallo,
Gerade neu und schon ein Problem:
Ich habe eine Template für eine Arrayklasse geschrieben (befindet sich in array.h").
Wenn ich jetzt in main() eine Instanz der Klasse erzeuge ist alles in Ordnung, ich kann damit wie gewünscht arbeiten.Wenn ich jedoch versuche, in der Headerdatei einer anderen Klasse eine Instanz der Templateklasse anzulegen, meldet sich gcc mit folgendem Fehler:
error: expected identifier before '(' token
error: expected ',' or '...' before numeric constantSieht also praktisch so aus:
andereklasse.h
#include "array.h"
class andereklasse
{
private:
Array<int> test(10);
}Kein Fehler ergibt sich jedoch, wenn ich es folgendermaßen mache:
#include "array.h"
int main()
{
Array<int> test(10);
}Woran liegt das?
-
Das hat mit dem Template nichts zu tun sondern damit dass Membervariablen nicht direkt in der Klasse initialisiert werden können, sondern erst im Konstruktor.
-
Die Konstruktorparameter kannst du nicht bei der Deklaration der Membervariable angeben - die mußt du erst übergeben, wenn du ein Objekt erzeugen willst:
class andereklasse { public: andereklasse() : test(10) //Initialisierung des Arrays {} private: Array<int> test; }
-
--
Edit: To sloooow
-
Danke an alle, hatte ich ganz verdrängt.
-
Ich habe auch nochmal ne Frage.. Wenn man aber eine solche Variable in der Klasse benötigt??? Reicht es wenn man einfach einen Pointer auf das Array erstellt und erst später Speicher reserviert?
-
Wenn Du eine solche Variable in der Klasse brauchst dann machst Du das so wie CStoll es gezeigt hat

-
Oh... hab ich irgendwie übersehen
