Bei mir scheint sich der Inhalt eines Arrays buchstäblich in Luft aufzulösen, in der folgenden Funktion. Sie ist ein member der Klasse ES_Cluster und soll dazu dienen spezifische Daten aus sich selbst an ein anderes Objekt desselben Typs weiterzugeben.
Anzumerken ist dass TempCube.Stars nicht vollständig leer ist. Das Objekt [0] ist noch vorhanden, aber die restlichen Objekte sind alle Identisch, initialisiert zwar, aber mit Daten die weiss Gott woher kommen.Kann mir jemand sagen wo die ursprünglichen Daten hin sind?
Code:
void ES_Cluster::CreateCube(ES_Cluster &Cube, long X, long Y, long Z)
{
ES_Cluster TempCube;
TempCube.Stars = new ES_Star[nStars]; //ein temporäres Objekt in das die Daten vorübergehend verschoben werden
long StarCount = 0;
size_t size;
for (long count = 0; count < nStars; ++count) //hier wird durch das ganze Objekt durchgegangen
{
if (Stars[count].CubeX == X && Stars[count].CubeY == Y && Stars[count].CubeZ == Z) //prüfen ob die einzelnen objekte im Array Stars die Bedingungen erfüllen um weitergegeben zu werden
{
TempCube.Stars[count] = Stars[count];
++StarCount; //hier wird gezählt wie viele Objekte den Bedingungen entsprechen
}
}
//bis hierher läuft alles normal, TempCube enthält alle Daten die es weitergeben soll
Cube.Stars = new ES_Star[StarCount]; //Das Ausgabeobjekt wird auf die richtige Grösse getrimmt
Cube.nStars = StarCount;
for (long count = 0; count < StarCount; ++count)
{
Cube.Stars[count] = TempCube.Stars[count]; //und hier sollten dann die Daten an zur definitiven Verwendung weitergegeben werden. Nur: TempCube.Stars ist plötzlich leer.
}
}
Anzumerken ist dass TempCube.Stars nicht vollständig leer ist. Das Objekt [0] ist noch vorhanden, aber die restlichen Objekte sind alle Identisch, initialisiert zwar, aber mit Daten die weiss Gott woher kommen.Kann mir jemand sagen wo die ursprünglichen Daten hin sind?
Zuletzt bearbeitet: