Zugriff auf eine andere Klasse



  • Ich habe mir eine eigene CPrintPic Klasse erstellt.
    Jetzt möchte ich von der Klasse CLadePic abfragen welches
    Radio Button in der CPrintPic Klasse ausgewählt wurde.
    Die Member Variable heisst m_join.

    In der Klasse geht es so,aber nicht ausserhalb.
    m_join.GetCheck();

    Geht das überhaupt ?



  • Wenn die Methode GetCheck() public ist, sollte es so gehen.



  • Eingefügt in CPrintPic.h

    public:
    m_join.GetCheck();

    Fehlermeldung:
    nichtdeklarierter Bezeichner



  • Nein - CPrintPic() benötigt eine public Methode GetCheck() - die kannst du dann von außen aufrufen.



  • Verstehe ich das richtig das ich mir eine Methode
    schreiben muss die die Member m_join ausliest.

    Das ist ja so umständlich,das muss noch
    einfacher gehen.

    Ich habe hier 20 Member die ich abfrage.
    Das kann doch nicht sein,das ich 20 verschiedene Methoden
    schreiben muss.

    Bitte helft mir.



  • Janes schrieb:

    Verstehe ich das richtig das ich mir eine Methode
    schreiben muss die die Member m_join ausliest.

    Das ist ja so umständlich,das muss noch
    einfacher gehen.

    Ich habe hier 20 Member die ich abfrage.
    Das kann doch nicht sein,das ich 20 verschiedene Methoden
    schreiben muss.

    Bitte helft mir.

    Ja, das verstehst du richtig.
    Doch, du musst wirklich 20 Methoden für die Members schreiben, außer du würdest die Members Public deklarieren, was aber kein guter Stil ist.



  • Mal abgesehen vom Stil,die Member in der anderen Klasse stehen
    alle unter dem public:
    Aber aus einer anderen Klasse habe ich keinen Zugriff darauf.
    Bekomme immer diese Fehlermeldung: "nichtdeklarierter Bezeichner"



  • ich wirds so versuchen:
    erstmal include "LadePic.h" falls das der header der Datei ist

    Danach ein Objekt der Klasse anlegen

    CLadePic m_LadePic;  // Objekt erzeugen
    

    darüber dann auf die Variable zugreifen

    m_LadePic.m_join.GetCheck();
    


  • Und das geht wiederrum nur wenn m_join public ist -.- Und das ist unsauber 🙂

    Also wenn dann mit nem Pointer und Getter.. und Setter also Praktisch so:

    class CLadePic
    {
    // ...
    protected:
        CButton m_join;
    // ...
    public:
        CButton* GetBtnJoin(void) { return &m_join; }
    // ...
    };
    

    und dann in der CPrintPic.h

    class CPrintPic
    {
    // ...
    protected:
        CLadePic m_LadePic; // Also das muss nicht... musst halt nur irgendwo an deine CLadePic Klasse kommen ;)
    // ...
    };
    

    und in der CPrintPic.h

    // ...
    CButton* pJoin = m_LadePic.GetBtnJoin();
    pJoin->GetCheck();
    // ...
    

    Oder halt:

    class CLadePic
    {
    // ...
    public: 
        bool GetJoinCheck(void) { return m_join.GetCheck(); }
    // ...
    }
    

    usw...



  • Oder du deklarierst die Klasse CLadePic als friend der Klasse CPrintPic, dann hast du Zugriff auf sämtliche Member.

    class CPrintPic
    {
    private:
       friend CLadePic;
       CButton m_join;
    }
    

Anmelden zum Antworten