001
31.12.2003, 18:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
ich kenn mich zwar mit dem opengl krempel nicht aus....
also es gibt mehrere möglichkeiten wie du das realisieren könntest.
zb.: du verwendest eine Containerklasse aus der STL. z.b. std::vector die nimmt dir die ganze speicherverwaltung ab und du musst nicht neuen speicher allokieren sondern das macht der STL-container automatisch....
du schreibst dir eine neue Klasse bei der ein Member ein array von objekten deiner Testpunkt klasse ist und allokierst ständig speicher nach wenn du mehr brauchst...
oder du verwendest eine liste.....
am einfachsten ist es vermutlich mit einem std::vector verwende mal die forumssuche da gibt es massenweise beispiele dazu wie das zu verwenden ist....
nun mal zu dem was du gemacht hast...
| C++: |
#include "stdafx.h" #include <stdio.h>
int bereits_vorhandene_Punkte=0;// globale variablen sind imemr schlecht du könntest z.b. eine static variable in deiner klasse verwenden oder du machst halt eine neue klasse in der sich ein testpunkt-array befindet....
class Testpunkt { public: Testpunkt(double,double,double); void zeigKoord() { printf("%fx %fy %fz\n",x,y,z); } private: double x; double y; double z; };
// Konstruktor
Testpunkt :: Testpunkt(double _x, double _y, double _z) { x=_x; y=_y; z=_z; }
// es ist nicht nötig unterstriche zu verwenden.... du kannst das auch so machen Testpunkt :: Testpunkt(double x, double y, double z) { this->x=x; /this liefert dir einen zeiger auf das object this->y=y; this->z=z; }
// Objekt von Klasse ableiten Testpunkt Punkt1(1,2,3);
void neuerPunkt() { //das geht so gar nicht.....gaaaaaaaaaanz übel und du kannst bei new auch nicht gleichzeitig ein konstruktor mitverwenden, dann müsstest du ein doppelpointerarray verwenden.... new Testpunkt Punkt[bereits_vorhandene_Punkte](1,1,1); bereits_vorhandene_Punkte++; }
//auch übel wie bei neuer punkt void killPunkte() { for (int loop= bereits_vorhandene_Punkte;loop>-1;loop--) { delete Testpunkt Punkt[bereits_vorhandene_Punkte]; } }
int main() { Punkt1.zeigKoord(); neuerPunkt(); neuerPunkt(); killPunkt(); return 0; }
|
also fazit wenn du dich nicht mit dem speicherallokieren rumärgern willst nimm einen std::vector.... -- ...fleißig wie zwei Weißbrote |