Arraygröße in Konstruktor festlegen
-
HI!
Ich habe eine Klasse die ein 2-dimensionales Array enthält. Dessen Größe soll aber erst im Konstruktor festgelegt werden. Wie muss ich das denn nun definieren, damit ich nicht ständig ein "invald use of non-static data-member" bekomme?
Dankeschön,
Gruß
-
Hallo,
Fragen wir doch mal andersrum. Warum bekommst du denn diesen Fehler? Wie wolltest du es denn machen?
Schau auch mal in die FAQ zu mehrdimensionale Arrays (siehe anderer Thread).
http://www.c-plusplus.net/forum/viewtopic-var-t-is-199561.html
-
Naja, da habe ich schon nachgeschaut, aber irgendwie schien mir das Problem da ein wenig anders auszusehen. Naja im Prinzip soll das ganze irgendwie so aussehen:
class Klasse { private: int dim; public: Klasse (); //Konstruktor float MeinArray[dim][dim]; };und im Konstruktor soll jetzt dim auf eine Größe festgesetzt werden, die danach nicht mehr verändert wird. Das obige ist natürlich falsch, verdeutlicht aber wohl was ich suche...
-
Der FAQ-Artikel trifft voll auf dich zu. Alternativen wären hier lediglich noch vector<vector<float> > oder auch boost::multi_array.
-
Das geht so nur mit new[]. Nimm doch einen std::vector<std::vector<float> >.
Oder so:
class Klasse { enum { dim = 42 }; float MeinArray[dim][dim]; }; // oder template <std::size_t dim> class Klasse { float MeinArray[dim][dim]; }; Klasse<42> MeinObjekt;