Methode um Daten in Struktur einer Klasse zu schreiben



  • Ich habe eine Struktur in einer Klasse (private).
    Wie spreche ich nun die einzelnen Variablen der Struktur mit einer Methode an? 😕 😕 😕 [cpp]



  • Hallo

    du meinst Getter?

    struct TMyStruct
    {
      int Zahl;
      AnsiString Text;
      };
    
    class TMyClass
    {
      private :
        TMyStruct MyStruct;
    
      public :
        ...
        const TMyStruct *Get_MyStruct(); // Gesamter Zugriff
        int Get_Zahl(); // Zugriff aus einzelnen Wert
      };
    
    // Gesamter Zugriff
    const TMyStruct * TMyClass::Get_MyStruct()
    {
      return(&MyStruct);
      }
    
    // Zugriff aus einzelnen Wert
    int TMyClass::Get_Zahl()
    {
      return(MyStruct.Zahl);
      }
    

    bis bald
    akari



  • Danke und Sorry, ich meinte wie schreibe ich in die Struktur. 🙄 :p 😉 😃



  • Hallo

    indem du Setter dazunimmst :

    void TMyClass::Set_Zahl(int NewZahl)
    {
      MyStruct.Zahl = NewZahl;
      }
    

    /Edit : bitte las das mit der fetten Schrift, und reduziere deine Smilies.

    bis bald
    akari



  • Danke, funktioniert!



  • Nächstes Problem:

    Ich habe folgende Methoden geschrieben:

    public in der Klasse:

    void Setpvorname(char *Newpvorname);        
    char Get_pvorname();
    

    in der cpp:

    void TAdressen::Setpvorname(char *Newpvorname)
    {
     strcpy(daten.pvorname, Newpvorname);
    }
    
    char TAdressen::Get_pvorname()
    {
     return(*daten.pvorname);
    }
    

    Beim Aufruf im Hauptprogramm:

    char buf[150];
      ObjektAdressen->Setplz(StrToInt(EditPLZ->Text));
      ObjektAdressen->Setpvorname(EditVorname->Text.c_str());
      sprintf(buf,"%i %s",ObjektAdressen->Get_plz(),
                          ObjektAdressen->Get_pvorname());
      ListBoxDaten->Items->Add(buf);
    

    schmiert der Compiler ab!
    Was mache ich falsch?



  • Ich markiere dir mal deine Fehler...[cpp]void Setpvorname(char *Newpvorname);
    char Get_pvorname(); //Fehler[/cpp]
    in der cpp:
    [cpp]void TAdressen::Setpvorname(char *Newpvorname)
    {
    strcpy(daten.pvorname, Newpvorname);
    }

    char TAdressen::Get_pvorname() //Wiederholungsfehler
    {
    return(*****daten.pvorname) //Fehler;
    }[/cpp]

    - Windoof



  • Hallo

    um das, was Windoof angekreidet hat zu vermeiden, benutzt AnsiString statt char *.

    bis bald
    akari



  • Danke für die Hilfe.
    Bin leider noch ein Anfänger in C++.
    Wo genau ist dort der Fehler, beziehungsweise was ist dort zu ändern?



  • du musst mit pointern arbeiten.
    "char" ist EIN zeichen
    "char *" zeigt auf eine zeichenkette

    char * TAdressen::Get_pvorname(void)
    {
    return(daten.pvorname);
    }



  • Danke das erklärt alles.
    Habe jetzt AnsiString verwendet, ist wirklich eleganter.


Anmelden zum Antworten