Array mit überladenen Strukturen
-
Also geht es gar nicht wie ich es mir vorstelle?
-
probiere mal :
VECTOR vct[4]={(1,2,3),(1),(0),(2,3.4,0)};
-
Man darauf hätte ich auch kommen können. Danke
-
das typedef braucht jedoch noch nen namen und in der initialisierungsliste muss man darauf achten dass man wirklich floats mitgibt, entweder durch casts oder eben .0
viel erfolg
#include <iostream> typedef struct VECTOR { float x; float y; float z; VECTOR(float _x, float _y, float _z) { x=_x; y=_y; z=_z; } VECTOR(const float f[3]) { x=f[0]; y=f[1]; z=f[2]; } VECTOR(const float f) { x=f; y=f; z=f; } }vector; main() { vector v[4]={(1.0),(2.0),(3.0),(0.0)}; }
-
int main
-
Ich habe es jetzt so gemacht. Leider wird jetzt nicht gezeichnet.
Begin(LINESTRIP); Color(0.0f,1.0f,0.0f); Vertex(10.0f, 0.0f, 0.0f); Vertex(0.0f); End();
So wird eine grüne Linie gezeichnet.
Wenn ich es so mache passiert nichts
VECTOR vct[2]={(10.0f, 0.0f, 0.0f), ( 0.0f)}; Begin(LINESTRIP); Color(0.0f,1.0f,0.0f); Vertex(vct[0]); Vertex(vct[1]); End();
Vertex ist so deklariert:
void Vertex(float x, float y, float z); void Vertex(VECTOR vct);
-
Hallo kann mir einer einen Rat geben woran es liegen könnte?
VECTOR vect[2]={(0.0,0.0,0.0), (0.0,0.0,10.0)}; Vertex(vect[0]); Vertex(vect[1]);
Zeichnet was anderes als
Vertex(0.0,0.0,0.0); Vertex(0.0,0.0,10.0);
Im ersten Beispiel ist es so als ob falsche Werte abgespeichert werden. Woran kann das liegen?
-
Hallo, ich habe jetzt mal die Struktur geändert.
typedef struct VECTOR { float x; float y; float z; VECTOR(const float _x, const float _y, const float _z) { x=_x; y=_y; z=_z; } /* VECTOR(const float f[3]) { x=f[0]; y=f[1]; z=f[2]; } VECTOR(const float f) { x=f; y=f; z=f; }*/ }VECTOR;
Gebe ich jetzt das ein
VECTOR vect[1]={(1.0f, 1.0f, 1.0f)};
Kommt die Fehlermeldung
error C2440: 'initializing' : 'const float' kann nicht in 'struct VECTOR' konvertiert werden
-
Hallo,
der Fehler ist simpel. Bei
VECTOR vect[1]={(1.0f, 1.0f, 1.0f)};
haben die geschweiften Klammern nix zu suchen. Die müssen weg.
Oh, und im Konstruktor
VECTOR(const float f[3]) { x=f[0]; y=f[1]; z=f[2]; }
steckt auch ein Fehler. Mit f[3] übergibst Du kein Array mit 3 Elementen, sonder das dritte Element eines Array, also einen Wert. In dem Fall mußt Du mit Zeigern arbeiten.
grüße Con@n
[ Dieser Beitrag wurde am 20.03.2003 um 00:52 Uhr von Con@n editiert. ]
-
also die {} sind schon richtig,
so sollte das gehenVECTOR vect[1]={VECTOR(1.0f, 1.0f, 1.0f)};
und "VECTOR(const float f[3])" ist auch richtig,
-
ich gebe dimah recht, sehe aber auch keine lösung für das problem.
um mal sicherzugehen, guck dir mal den inhalt von v[0] und v[1] an.