Von einem Objekt auf das Andere zugreifen



  • Hallo!

    Angenommen es gibt 2 Objekte:

    ObjKlasseA ObjA;
    ObjKlasseB ObjB;

    Und ich will mit einer Methode des einen Objektes auf die Daten des anderen zugreifen.

    Nehmen wir an ObjB enthält eine Methode
    public:
    int Get_Zahl() {return Zahl;}
    und eine Elementvariable
    private:
    int Zahl;

    ObjA hat eine Methode
    void X2_Out()
    {
    int X2Zahl = 2* (und hier hätte ich gerne den Wert von ObjB.Zahl Ich kann aber nicht über ObjB.Get_Zahl() zugreifen.)
    cout << tempZahl;
    }

    Warum geht das nicht? Ich kann nur von main aus zugreifen.
    Ich muss aber von ObjA aus ObjB auslesen sowie verändern können.
    Pointer?
    Referenzen?
    Velleicht auch ohne Pointer möglich (Es wird später noch zig Pointer in dem Programm geben, deswegen möchte ich noch mehr gerne vermeiden 😕 😉

    PS Habe einen bescheuerten MSVC++ - Compiler (also bitte keine Compilerspez. Befehle 😃 )

    Danke



  • Wie würdet ihr folgendes machen?

    Ich möchte ein Datenerfassungsprogramm programmieren (welch Überraschung 👍 )

    Habe also diverse Klassen, die Daten enthalten und diverse andere, die diese Verändern sollen.

    Ich würde jetzt noch eine Klasse MenuUndKommando (als Bsp.) erschaffen um durch das Konsolenmenu zu führen und um die ausgewählten Funktionen zu starten.
    Würdet ihr das auch so machen? Wir hätten demnach eine Klasse, die das Menu auf dem Bildschirm präsentiert und auch die Funktionen des Menus übernimmt - also auch nach Auswahl des Menupunktes vom Benutzer die Objekte mit den Methoden aufruft. Könnt ihr mir folgen 😕 ?

    Gibt es noch andere gängige Methoden? Oder ist das optimal?

    Danke im Voraus !!



  • mach doch folgendes

    void X2_Out(ObjKlasseB* Klasse)
    {
    int Zahl = Klasse->GetZahl();
    cout << tempZahl;
    }

    OBJA a;
    OBJB b;
    b.X2_Out(&a);

    du solltest in out einen zeiger verwenden, da sonst die klasse jedesmal kopiert werden würde!



  • Gut. Das sollte funktionieren.
    Wenn ich aber ein Aray von Objekten übergeben muss? Was mache ich dann?

    Der Zeiger zeigt ja nur auf den Array-Anfang.

    OBJA A[8][8];

    Jetzt möchte ich auf alle Objekte mittels der X2_OUT(); zugreifen (als Beispiel).

    Wie kann ich das realisieren?



  • Hat jemand etwas zu Frage zwei?


Anmelden zum Antworten