2D Array von Zeigern



  • Wenn man einen Array zur Laufzeit erstellen will, macht man das ja einfach so:

    int * myArray = new int [myArraySize];

    Aber wie kann man einen 2D Array aus Zeigern erstellen???

    CObject *** myArray = new CObject * [myArraySizeX][myArraySizeY];
    funktioniert bei mir genausowenig wie

    CObject * myArray[][] = new CObject * [myArraySizeX][myArraySizeY];



  • Machs doch einfach so:

    std::vector< std::vector< myClass* > > myVector;
    myVector.reserve(SizeX);
    for(int i=0; i<SizeX; ++i) {
        myVector[i].reserve(SizeY);
    }
    

    Wenn du dabei noch die Objekte dynamisch erstellt werden kannst du gleich den einen boost-Ptr verwenden (hab grade irgendwie Name vergessen).

    Gruß



  • Streng genommen gibt es keine mehrdimensionalen Arrays in C++. Das hier

    new CObject * [myArraySizeX][myArraySizeY]
    

    ist auch nur ein normales Array, mit Elementtyp CObject () [myArraySizeY]* und Grösse myArraySizeX. Der Typ muss natürlich compilezeitkonstant sein, weshalb myArraySizeY konstant sein muss.
    Dementsprechend muss der Code wie folgt sein

    const size_t myArraySizeY = bla;
    // typen wir ein bisschen, damit es etwas verstaendlicher wird
    typedef CObject* CObjectColumn[myArraySizeY];
    //...
    CObjectColumn* myArray = new CObjectColumn[myArraySizeX];
    



Anmelden zum Antworten