Zeiger auf Struktur als Parameter an Methode übergeben



  • Ich möchte eine Methode erstellen, an die ein struct als Parameter übergeben wird.
    Also zum Beispiel möchte ich folgende Struktur erstellen:

    struct Person
    {
        AnsiString ASVorname;
        Ansistring ASNachname;
        int iAlter;
    }
    

    Diese Struktur möchte ich jetzt zum Beispiel an die Methode "PersonErstellen(Person p)" übergeben.

    In dieser Methode möchte ich nun das struct füllen mit p.ASVorname = "Hans" usw.
    und anschließend verwenden. Wie mache ich das?



  • Hallo

    genauso wie bei allen andern Variablen auch. Du must den Parameter nur By-Reference anstatt By-Value übergeben, damit die Änderung nicht nur auf einer Kopie sondern auf dem original ausgeführt wird

    PersonErstellen(Person& p) // Als Referent übergeben!
    {
      p.ASVorname = "Hans"; // Änderung wird direkt auf der Instanz des Aufrufers ausgeführt
    }
    

    bis bald
    akari



  • Und wie rufe ich die Methode dann zum Beispiel OnButtonClick auf? Wenn ich versuche, so, wie unten beschrieben eine Person zu erstellen, dann bekomme ich den Fehler "Ungültige Verwendung von typdef 'TForm1::Person'

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        PersonErstellen(Person Eins);
        AnsiString ASTest = Eins.ASName;
    }
    

    Muss ich da vorher eine neue Struktur erstellen, die genauso aufgebaut ist, wie die, die ich als Parameter übergeben möchte?



  • Hallo

    Das hat nichts mit OnButtonClick zu tun. Der Aufruf muß so aussehen wie aus allen anderen Funktionen auch

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Person Eins;
        PersonErstellen(Eins);
        AnsiString ASTest = Eins.ASName;
    }
    

    bis bald
    akari


Anmelden zum Antworten