structs... bei -> Operator Fehlermeldung!



  • Hallo zusammen
    Ich bekomme eine Fehlermeldung (error C2819: Der Typ 'main::zeileDIN1449' hat keinen überladenen Elementoperator '->' wenn ich auf d zugreifen will(Zeile 57)
    weshalb?

    #include<stdio.h> 
    
    void main() 
    { 
    
       /*Definition der verwendeten Variablen mit Datentyp*/ 
       int i, d; 
       int z=0; 
    
       /*Deklaration des structs zeile DIN1449*/ 
       typedef struct 
       { 
          int d; 
          int l; 
          char toleranz[4]; 
          double r; 
       } zeileDIN1449; 
    
       /*Definition und Initialisierung der tabelle DIN748*/ 
    
       zeileDIN1449 tabelleDIN1449[9] 
       ={ 
          {20, 36, "m6", 3.4}, 
          {25, 42, "m8", 4.1}, 
          {30, 58,"m10", 4.5}, 
          {40, 82,"m12", 7.1}, 
          {50, 82,"m16", 7.1}, 
          {60,105,"m20", 8.6}, 
          {70,105,"m24", 9.6}, 
          {80,130,"m30",10.8}, 
          {90,130,"m30",12.3}, 
       }; 
    
       printf("**********************************************\n"); 
       printf("*           Suche in DIN1449                 *\n"); 
    printf("**********************************************\n\n"); 
    
       do 
       { 
          printf("Bitte geben Sie einen Durchmesser zwischen 20 und 90 ein!\n\n"); 
    
          printf("Bitte Durchmesser eingeben: "); 
          scanf("%i",&d); 
       } 
       while(d < 20 || d > 90); 
    
       if (d==90) 
          z=8; 
    
       for(i=0; i<8; i++) 
       { 
    
         if(tabelleDIN1449 [i]->d <= d && d < tabelleDIN1449[i+1]->d) //HIER-FEHLER
          { 
    
             z=i; 
             break; /* Eintrag gefunden, beenden der Schleife*/ 
    
          } 
    
       } 
    
       printf("\nDie Daten fuer das Wellenende mit dem Durchmesser d=%i:\n",d); 
       printf("Laenge l = %i \nToleranzfeld = %s \nRadius r = %f\n\n", tabelleDIN1449[z].l,tabelleDIN1449[z].toleranz,tabelleDIN1449[z].r); 
    }
    

    Gruß GRASS



  • tabelleDIN1449 [i] ist ja auch kein Zeiger, sondern ein "normales" struct. Da mußt du den . verwenden, um auf die Elemente zuzugreifen.



  • Grass schrieb:

    Hallo zusammen
    Ich bekomme eine Fehlermeldung (error C2819: Der Typ 'main::zeileDIN1449' hat keinen überladenen Elementoperator '->' wenn ich auf d zugreifen will(Zeile 57)
    weshalb?

    Weil Du im falschen Forum unterwegs bist.
    C++ != C 😃



  • CStoll schrieb:

    tabelleDIN1449 [i] ist ja auch kein Zeiger, sondern ein "normales" struct. Da mußt du den . verwenden, um auf die Elemente zuzugreifen.

    Danke! wusste ich nicht! dachte -> geht immer!



  • Grass schrieb:

    Danke! wusste ich nicht! dachte -> geht immer!

    Nein, den Unterschied zwischen Punkt und Pfeil mußt du schon erkennen 😉
    ("var.el" ist der Zugriff auf Struktur-Elemente, "(*ptr).el" bzw. "ptr->el" wird beim Zugriff über Zeiger)


Anmelden zum Antworten