struct -> struct*



  • Hallo,

    ich habe eine Funktion, die eine Struktur zurückgeben muss.
    Dies ist erstmal kein Problem.
    In dieser Funktion muß eine weitere Funktion aufgerufen werden, die aber einen Zeiger auf diese Struktur zurückliefert.
    Die Funktion die den Zeiger zurückliefert, kann ich nicht ändern, da es sich um eine interne Funktion des C++-Builders handelt.

    Wie kann ich jetzt den Inhalt des Zeigers in die Struktur speichern?
    Ich will nicht jedes Element einzeln ansprechen wegen Fehleranfälligkeit und Aufwand.

    Danke

    struct TCompilerOption {
      AnsiString optName;          
      bool optIsGroup;             
    // hier steht noch mehr......
    };
    
    TCompilerOption __fastcall TCompiler::GetOptions(int Index)
    {
      TCompilerOption* MyCompilerOption;
      MyCompilerOption = (TCompilerOption *) fOptions->Items[Index];
      return MyCompilerOption;  // geht nicht
    }
    


  • Hallo,
    wenn du einen Zeiger hast und du brauchst das Objekt auf das der Zeiger zeigt, dann musst du den Zeiger dereferenzieren.
    Sprich:

    TCompilerOption __fastcall TCompiler::GetOptions(int Index) 
    { 
       ...
      return *MyCompilerOption;
    }
    

    Das setzt natürlich voraus, dass deine Struktur Copy-Konstruierbar ist.

    Außerdem ist es wichtig zu wissen, was fOptions->Items hier liefert. Einen Zeiger auf ein dynamisch erzeugtes Objekt? Dann würdest du hier ein Speicherloch erzeugen.



  • Hallo HumeSikkins,

    danke so gehts wunderbar.
    Habe sämtliche casts und was weiss ich ausprobiert. Alles Mist.

    fOptions->Items liefert einen Zeiger auf eine Struktur P,

    die so vorher definiert war:

    typedef struct TCompilerOption* PCompilerOption;
    
      PCompilerOption P;
    

    Sollte doch so gehen, oder?

    Übrigens gehört zwar nicht hierhin, möchte aber keinen neuen Thread aufmachen:
    Im alten Forum war ich sofort eingeloggt wenn ich die Seite aufgerufen hatte.
    Jetzt geht es nicht mehr. Da ich zu faul bin mich einzuloggen, poste ich jedesmal unrgistriert.
    Muss ich bei mir irgendetwas anderes einstellen oder woran liegt das?

    Danke nochmals für die schnelle Hilfe



  • Viele schreiben Wörter klein, die groß geschreiben werden müssten, aber andersherum? "Konstruierbar".


Anmelden zum Antworten