"Interaktion" von Objekten einer Klasse



  • Hallo,

    ich habe mir eine klasse geschrieben und dazu ein Array voller Objekte erstellt. Nun soll jedes Objekt mit den anderen Objekten seiner Klasse "interagieren" können, sprich Zugriff auf diese haben.
    Um dies zu bewerkstellen habe ich nun eine "neutrale" Funktion außerhalb der Klasse geschrieben, an diese kann sich das Objekt nun "wenden" und bekommt alle information über seine "Geschwister" die es benötigt.

    Nur jetzt kommt mir das doch sehr umständlich vor, gibt es denn nicht irgendwie eine bessere Möglichkeit um z.B. andere Membervariablen verschiedener Objekte einer Klasse von einer Memberfunktion derselben Klasse einzusehen?

    Ich hab auch schon mal die Suchfunktion benutzt, aber mir sind nicht die richtigen Stichworte zu dem Thema eingefallen und so konnte ich leider nichts finden.

    Über eine Antwort wäre ich dankbar



  • Hallo,

    ich verstehe leider nur Bahnhof. Etwas Code wäre hier hilfreich..

    MfG



  • Das ist ja sowieso möglich 😕, hier wehrt sich niemand gegen den Zugriff auf private Elemente:

    class klasse
    {
    	public:
    		klasse():m_x(0){};
    
    		const int getmyint () const { return m_x; };
    
    		void setmyint(int x) { m_x = x; };
    
                // Ganz normale Zuweisung an private-Element eines anderen Objekts gleichen Typs
    		void sethisint(klasse& obj, int x) { obj.m_x = x; };
    
    	private:
    		int m_x;
    };
    

    Wo genau ist das Problem?

    MfG SideWinder



  • Ich glaube, er möchte, dass die Instanzen jeweil Zeiger/Referenzen auf die
    anderen Instanzen der selben Klasse besitzen, damit sie auch ohne den Umweg
    von Außen miteinander sprechen können. Richtig?

    Dazu könntest du einen privaten, statischen Member einführen (z.B. ein vector,
    list...), in den sich die der C'tor einträgt, und der D'tor den entsprechenden
    Eintrag wieder löscht.



  • SideWinder schrieb:

    Das ist ja sowieso möglich 😕, hier wehrt sich niemand gegen den Zugriff auf private Elemente:

    class klasse
    {
    	public:
    		klasse():m_x(0){};
    
    		const int getmyint () const { return m_x; };
    
    		void setmyint(int x) { m_x = x; };
    
                // Ganz normale Zuweisung an private-Element eines anderen Objekts gleichen Typs
    		void sethisint(klasse& obj, int x) { obj.m_x = x; };
    
    	private:
    		int m_x;
    };
    

    Wo genau ist das Problem?

    Ja genau.. wo ist das? Ich hatte irgendwie im hinterkopf, dass so etwas nicht funktioniert... danke, jetzt hab ichs einfach so gemacht und es läuft.

    Ist natürlich schon blöd wenn man sich Probleme konstruiert wo keine sind 🙄
    Da hab ich wenigstens meinem Namen in Ehren gehalten 😉


Anmelden zum Antworten