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;
    

Anmelden zum Antworten