Was bedeutet das?



  • typedef struct TypMitarbeiter
    {
    char Name[255];
    int Personalnummer;
    char Projekt[255];
    } Mitarbeiter;
    

    was bedeutet das letzte Wort Mitarbeiter vor dem Strich-Punkt?
    ich kenne nur

    typedef struct TypMitarbeiter
    {
    char Name[255];
    int Personalnummer;
    char Projekt[255];
    };
    

    kann man das auch auf class übertragen?



  • was du kennst ist wahrscheinlich

    struct TypMitarbeiter 
    { 
    char Name[255]; 
    int Personalnummer; 
    char Projekt[255]; 
    };
    

    früher verwendete man dann die struktur folgendermaßen

    struct TypMitarbeiter mitarbeiter; //mit expliziten struct
    

    und damit man nicht immer das struct davor tun muss, ein typedef davor und einen neuen namen danach:

    typedef struct TypMitarbeiter 
    { 
    char Name[255]; 
    int Personalnummer; 
    char Projekt[255]; 
    } MitArbeiter;
    

    Und das konnte so verwendet werden:

    Mitarbeiter mitarbeiter;
    

    Aber in C++ kannst du dir das typedef sparen.
    mit class genauso...



  • ohne das typedef benutzt man das um gleich bei der deklaration eine Klasse/Struktur zu erzeugen, dadruch lassen sich auch anonyme Klassen erzeugen sprich:

    struct
    {
      char Name[255];
      int Personalnummer;
      char Projekt[255];
    } Mitarbeiter, NochEinMitarbeiter, *p_Mitarbeiter; // usw
    

    ist dasselbe wie

    struct TypMitarbeiter
    {
      char Name[255];
      int Personalnummer;
      char Projekt[255];
    };
    
    TypMitarbeiter Mitarbeiter;
    TypMitarbeiter NochEinMitarbeiter;
    TypMitarbeiter* p_Mitarbeiter;
    

    ausser das bei der ersten Variante TypMitarbeiter halt unbekannt ist und du in Funktionen usw keine weiteren TypMitarbeiter erzeugen kannst.

    mit dem typedef machst du diese Möglichkeit aber wieder zunichte und schaffst dir bei C++(!) keinen Vorteil.
    Da dient das Mitarbeiter dann lediglich der Vervollständigung des typedefs.



  • KravenZ schrieb:

    ich kenne nur

    typedef struct TypMitarbeiter
    {
    char Name[255];
    int Personalnummer;
    char Projekt[255];
    };
    

    Was du alles kennst 😉 das ist jedenfalls syntaktisch falsch, und müsste vom Compiler abgewiesen werden.



  • Ich glaub da is das typedef nicht richtig, kann das sein? Ich kenn struct jedenfalls ohne typedef. In dem Fall also

    struct Datentyp
    {
       int Zahl;
       double Gleitkommazahl
       char Zeichen;
       string Zeichenkette;
    };
    


  • das typedef stammt aus C, wo man folgendes machen muss

    //C:
    struct foo { };
    
    struct foo foo_objekt;
    //man muss ein explizites struct angeben!
    
    typedef struct { ] bar;
    
    bar bar_objekt;
    //typedef macht das überflüssig
    
    //C++:
    struct foo { };
    
    foo foo_objekt;
    


  • danke


Anmelden zum Antworten