Zugriff auf Komponenten einer Struktur



  • Hallo,

    ich habe da mal eine frage
    und zwar sitze ich gerade an einem Problem bezüglich Zugriff auf Komponenten einer Struktur.

    gegeben sind folgende Strukturen:

    struct Li {
      void* head; // bzw struct RhymePair *head
      struct Li* tail;
    };
    typedef Li RhymePairList;
    
    typedef struct{
      sizetype length;
      char* data;
    } String;
    
    typedef struct {
      sizetype length;
      String* data;
    } WordList;
    
    typedef struct {
      String w1;
      String w2;
    } RhymePair;
    

    RhymePairList stellt eine einfach verkettete Liste dar in deren "head" immer ein RhymePair gespeichert werden soll

    Mein Problem:
    Wenn ich nun ein RhymePair erzeuge und dem head der RhymePairList zuordne, möchte ich gerne später auf die einzelnen Wörter der Reimpaare der Liste zugreifen, zb so:

    String str=RhymePairList->head->w1

    das funktioniert aber nicht.

    weiss jemand wieso bzw. hat jemand einen vorschlag wie ich darauf zugreifen kann?



  • Indem du deinen Listentyp nach den anderen definierst und statt void* korrekt RhymePair* verwendest.



  • Danke, jedoch habe ich es breits ausprobiert head den typ struct Rhymepair*
    zu zuweisen.
    Bei dem testaufruf:

    printf("%s",rpl->head->w1.data);
    

    sagt mir der gcc Kompiler jedoch:

    [Error] dereferencing pointer to incomplete type



  • Lies dir meinen einen kurzen Satz nochmal durch, und mache es genauso, wie dort steht. Deine Zeile 5 ist übrigens Schrott.



  • Der Compiler geht nur einmal durch die Datei.
    Wenn du etwas benutzt, muss es schon bekannt sein.
    Darum ist die Reihenfolge wichtig.


Anmelden zum Antworten