012
29.05.2010, 17:28 Uhr
~jojo
Gast
|
Hallo nochmal,
ich glaube dass ich den Fehler gefunden habe, es kracht nämlich nicht mehr .Wo genau der Fehler lag kann ich jetzt allerdings nicht mehr sagen. Es wahr wohl eine Mischung aus Problemen im Destruktor sowie im erstellen des Objekts von SceneObject (wie oben jmd. geschrieben hat).
So läufts jetzt (auf jeden Fall mal das Anhängen und Vergrößern der Liste:
C++: |
void SceneObjectList::add(SceneObject* object) { if (numberElements == arraySize) { SceneObject** data2; data2 = new SceneObject*[arraySize*2]; for (int i = 0; i < (numberElements); i++) data2[i] = data[i]; delete[] data; data = data2; //delete data2; arraySize = arraySize*2; } data[numberElements] = object; numberElements++; }
SceneObjectList::~SceneObjectList() { //for (int i = 0; i < (numberElements);i++) // delete data[i]; delete[] data; data = NULL; }
|
und das "Hauptprogramm":
C++: |
SceneObjectList a; //a = SceneObjectList::SceneObjectList(); for (int i = 0; i < 2; i++) a.add(SceneObjectFactory::createBlueSphere(Point(0,10,0),5)); cout << "einfacher Add test bestanden" << endl; for (int i = 0; i < 5; i++) a.add(SceneObjectFactory::createBlueSphere(Point(0,10,0),5)); cout << "schwerer add test bestanden" << endl; Color b = Color(0,0,1.0); Color c; c = a.getObject(2)->getColor(); cout << "Bloeder Fehler"; return 1;
|
Auf jeden Fall vielen Dank für die Hilfe.
Mfg (ich melde mich bestimmt demnächst wieder )
Jojo
PS: Klar, dass wenn ich das Interface nicht verändere, der Test das nicht merkt. Wir müssen jedoch auch eine Dokumentation mit Doxygen erstellen und ich weiß nicht wie genau die das prüfen... |