hallo ich möchte ein dreidimensionales array als element einer klasse verwenden.
die grösse der ersten beiden dimensionen wird im konstruktor aus einer textdatei ausgelesen.
also irgendwie so etwas:
CTileMap::CTileMap()
{
//MapWidth und MapHeight aus Textdatei auslesen
...
Array[MapWidth][MapHeight][10]
...
}
hab schon ein bisschen gegoogelt und herausgefunden, dass es wohl schwieriger ist als ich zu beginn dachte.
ist das möglich ohne die vector klasse aus der std zu verwenden oder eine eigene klasse dafür zu schreiben?
was haltet ihr für die beste variante?
vielen dank für alle antworten!
Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge
#define VARTYPE int//oder was auch immer
class CTileMap {
VARTYPE ***Array, **Array0, *Array00;
...
};
CTileMap::CTileMap(){
//MapWidth und MapHeight aus Textdatei auslesen
...
//Array[MapWidth][MapHeight][10]
Array00=new VARTYPE[MapWidth*MapHeight*10];
Array0=new VARTYPE*[MapWidth*MapHeight];
Array=new VARTYPE**[MapWidth];
for(int i=0;i
MapWidth*MapHeight;i++)
Array0[i]=Array00[i*10];
for(int i=0;i<MapWidth;i++)
Array[i]=Array0[i*MapHeight];
...
}
CTileMap::~CTileMap(){
if(Array00)
delete[] Array00;
if(Array0)
delete[] Array0;
if(Array)
delete[] Array;
Array00=NULL;
Array0=NULL;
Array=NULL;
}
MapWidth und MapHeight bzw. die textdatei, in der diese informationen stecken, müssen vor dem aufruf des konstruktors gesetzt und/oder bekannt sein.
mr.escape
class CTileMap {
VARTYPE ***Array, **Array0, *Array00;
...
};
CTileMap::CTileMap(){
//MapWidth und MapHeight aus Textdatei auslesen
...
//Array[MapWidth][MapHeight][10]
Array00=new VARTYPE[MapWidth*MapHeight*10];
Array0=new VARTYPE*[MapWidth*MapHeight];
Array=new VARTYPE**[MapWidth];
for(int i=0;i
MapWidth*MapHeight;i++)
Array0[i]=Array00[i*10];
for(int i=0;i<MapWidth;i++)
Array[i]=Array0[i*MapHeight];
...
}
CTileMap::~CTileMap(){
if(Array00)
delete[] Array00;
if(Array0)
delete[] Array0;
if(Array)
delete[] Array;
Array00=NULL;
Array0=NULL;
Array=NULL;
}
MapWidth und MapHeight bzw. die textdatei, in der diese informationen stecken, müssen vor dem aufruf des konstruktors gesetzt und/oder bekannt sein.
mr.escape