C++ : Pointerzuweisung klappt nicht



  • Hi, ich möchte in meinem C++-Proggi drei Farben in Form von drei Dreier-Arrays festlegen, und einen Pointer currentColor immer auf eine der drei zeigen lassen. HIerzu hab ich folgenden Code:

    ------------------------

    typedef GLfloat CGColor3[3];
    
    CGColor3 RED = { 0.5f, 0.0f, 0.0f };
    CGColor3 GREEN = { 0.0f, 0.5f, 0.0f };
    CGColor3 BLUE = { 0.0f, 0.0f, 0.5f };
    
    CGColor3 *_currentColor;
    _currentColor = &RED;
    

    ------------------------

    Ich möchte den Pointer hier mit dem roten Farbton initialisieren, doch der Compiler beschwert sich und meint:

    "error C2501: '_currentColor': Fehlende Speicherklasse oder Typspezifizierer
    error C2040: '_currentColor': 'int' unterscheidet sich von 'CGColor3 ()' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
    error C2440: 'Initialisierung': 'CGColor3 (
    __w64 )' kann nicht in 'int' konvertiert werden"

    Bin für jeden Hinweis dankbar, *Jiriki*



  • mach deine typedefs sauber, dann hast solche verwirrungen nicht, lass das & vor RED weg



  • zu 1.) Was meinste genau?
    zu 2.) Mit oder ohne spielt keine Rolle.

    Grüßle, *jiriki*



  • struct CGColor3
    {
      GLfloat red, green, blue;
    };
    
    CGColor3 RED = { 0.5f, 0.0f, 0.0f };
    CGColor3 GREEN = { 0.0f, 0.5f, 0.0f };
    CGColor3 BLUE = { 0.0f, 0.0f, 0.5f };
    
    CGColor3 *_currentColor;
    _currentColor = &RED;
    


  • Klappt leider trotzdem nicht. Fehlermeldungen jetzt:

    (48): error C2040: '_currentColor': 'int' unterscheidet sich von 'CGColor3 *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
    (48): error C2440: 'Initialisierung': 'CGColor3 *__w64 ' kann nicht in 'int' konvertiert werden
    (48): error C2501: '_currentColor': Fehlende Speicherklasse oder Typspezifizierer
    (168): error C2664: 'glColor3fv': Konvertierung des Parameters 1 von 'CGColor3 *__w64 ' in 'const GLfloat *' nicht möglich
    (236): error C3861: '_currentColor': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden

    Grüßle, *jiriki*



  • CGColor3 is ein float oder????

    struct CGColor3
    {
      float red, green, blue;
    };
    
    CGColor3 RED = { 0.5f, 0.0f, 0.0f };
    CGColor3 GREEN = { 0.0f, 0.5f, 0.0f };
    CGColor3 BLUE = { 0.0f, 0.0f, 0.5f };
    
    CGColor3 *_currentColor;
    _currentColor = &RED;
    

    kannst reinkopieren und es funzt



  • meinte GLfloat is ein float?



  • man könnte ja auch einfach mal in den entsprechenden Zeilen schauen ob man den Typ richtig verwendet 🙄


Anmelden zum Antworten