Array mit überladenen Strukturen



  • 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 gehen

    VECTOR 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.


Anmelden zum Antworten