friend class variablen importieren!



  • Hallo,
    Ich habe zwei Klassen und diese Klassen besitzen Methoden.
    Wie kann ich es irgendwie schaffen die Variable die in der Methode
    definiert habe bei der anderen Klasse zu verwenden. Ich versuch gerade alles schaff es aber irgendwie nicht. Die klassen sind zu einander friend.



  • Funktionslokale Variablen kann man nicht zwischen Klassen teilen, da hat friend wenig Chance. Das müssen Membervariablen sein. Aber was hast du vor? Klingt sehr suspekt alles..



  • Ich hab ein Button gemacht der heisst Speichern. Hab jetzt eine Klassen Methode:

    void Setting::OnClickButton2(wxCommandEvent &event);
    

    In dieser Methode mach ich das hier :

    SERVER_INFO port_info;
    
        port_info.POP_Servername = string(POP_SN.mb_str());
        port_info.POP_Port = string(POP_P.mb_str());
    

    Jetzt hab ich ja POP_Servername und POP_Port gespeichert, aber ich brauch den auch in der anderen Klasse bei der Verbidung wieder.



  • Mach dir eine "Document" Klasse. (Wie auch immer du sie nennst, sie steht halt für das Fenster, könnte z.B. auch von einer Fenstklasse erben..)
    Dieses Dokument hat dann als Membervariable SERVER_INFO port_info;
    Dann lässt du dir eine Referenz auf das Dokument geben (z.B. in der Button Klasse) und speicherst die als Membervariable. Wenn dann der Button gedrückt wird, schreibst du das Zeug über die Referanz in das Dokument. Dann kannst du es auch von allen Controls aus wieder einlesen und brauchst kein friend gefrickel.

    <- Nicht gerade erfahren mit GUI, aber das beste was mir auf die Schnelle einfällt.



  • Habs so gemacht klappt nicht.

    string &POP = server_info.POP_Port;
    

    in der Funktion dann :

    void Setting::OnClickButton2(wxCommandEvent &event)
    {
    
        POP = string(POP_P.mb_str());
    }
    

    Wenn ich jetzt in der anderen Klasse:
    server_info.POP_Port

    verwende ist die leer....



  • OK Ich hab es hingekriegt mit der Referenz hat es geklappt. Danke 🙂
    Mein zweiter Fehler lag daran das ich Falsche ID bei dem textctrl verwendet hab.
    🙂
    Grüsse


Anmelden zum Antworten