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 wieCObject * 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 seinconst size_t myArraySizeY = bla; // typen wir ein bisschen, damit es etwas verstaendlicher wird typedef CObject* CObjectColumn[myArraySizeY]; //... CObjectColumn* myArray = new CObjectColumn[myArraySizeX];
-