Klassen Prototyp wenn man sie mit typedef definiert hat?
-
Hallo,
also ich habe zwei Klassen und jede Klasse verwendet die andere.
Also bräuchte ich den Prototypen, aber da ich die Klassen so definiert habe:// ball class typedef class { public: float x, y, z, xv, yv, zv, radius, angle, camdist, speed; GLUquadric *quadric; void init (); // function to set all the ball variables to 0 void set ( float x, float y, float z, // function to set the ball values float xv, float yv, float zv, float r, float angle, float camdist, float speed, GLUquadric * quad_ ); void move ( Uint8 * keystate, Object *obj[] ); // function to move the ball } Ball;
.. Also mit typedef vorne dran. Da weiß ich leider nicht wie der Prototyp dazu aussieht
oder ob es bei typedef überhaupt geht. Wenn es keinen gibt muss ich eben das typedef weglassen und es so machen, wie wir es nicht gelernt habenLg
SFandler
-
SFandler schrieb:
und es so machen, wie wir es nicht gelernt haben
Lass das typedef weg und sag deinem Lehrer, dass er euch nicht so einen Mist beibringen soll...
-
ok Danke
-
eine kleine Frage noch:
Also ich schicke meine Object Klasse in eine Funktion ( Will die Variablen der
Klasse auch verändern können ).
Das würde dann so aussehen, wenn sie keine Tabelle wärevoid move ( Object *obj );
Aber ich habe einen Object Array und habe es so versucht:
void move ( Object *obj[MAX_OBJ] );
Wenn ich dann die Funktion aufrufe:
ball.move ( &obj );
sagt der Compiler, dass ich obj vom Typ ()[10] nicht in ()[] konvertieren darf?
Kann mir bitte jemand erklären, warum das nicht geht?
-
Nur so ein paar Tipps:
- Keine öffentlichen Daten (es gibt Ausnahmen)
init()
? Konstruktor!- Wieso enthält die Klasse so viele
float
s? Schreibe Klassen (wie z.B.Vector
). - Mach ein
set()
für jeden Daten-Member. (Wenn du den dritten Punkt befolgt hast, ist es nicht mehr so viel.) move()
ist Kindekacke. Implementiere ein sauberes Vector-Matrix-System.- Mit Quadriken zu arbeiten ist nicht sehr toll. Mach es mit VBOs.
-
Danke für die Tipps.