Kommunikation zwischen Klassen
-
Hallo,
erstmal ein "HALLO" an alle hier, die diesen Beitrag lesen, denn ich bin neu hier.

Ich habe mal eine Frage zur Kommunikation zwischen Klassen.
Folgender Fall:
class A { bool m_bCheckA; float m_fA; }; class B { bool m_bCheckB; float m_fB; };Das ist zwar nicht vollständig, aber es geht nur ums Prinzip.
Class B muss jetzt zur Laufzeit Zugriff auf bool m_bCheckA der Class A haben, damit sie bestimmt Checks und Berechnungen machen kann. Jetzt gibt es noch 5 andere Klassen, die das auch machen müssen und der Code ist wesentlich komplexer. Wie kann ich denn zulassen, das andere auf Class A members zugreifen können OHNE friend Funktionen zu benutzen und was dann zur Laufzeit auch relativ schnell geht?
Vielen Dank für eure Zeit.
Gruß
Pete
-
class A { public: bool getCheckA() const {return m_bCheckA;} ... private: bool m_bCheckA; float m_fA; };So, vielleicht ????
-
Die einfachste (und unsauberste) Lösung wäre es wohl, die Membervariablen von A als public zu deklarieren - dann kann sie allerdings jeder lesen UND schreiben.
etwas sicherer ist folgende Variante:
class A { public: bool getCheck() const {return m_checkA;} // Lesezugriff void setCheck(bool v) {m_checkA=v;}// Schreibzugriff ... (analog für andere Werte) private: bool m_checkA; float m_fA; };(wenn andere Klassen nur lesen sollen, entfällt die setCheck()-Methode)
-
Vielen Dank für die Antworten.
Habe dann aber noch eine zusätzliche Frage: Muss ich dann in Class B ein Object der Class A erzeugen?
class B { public: void run(); private: bool m_bCheckB; float m_fB; }; void B::run(void) { A OjectA; if(ObjectA.getCheck()) { m_bCheckB = TRUE; } }Müsste ich das dann so machen?
-
Du kannst dir auch irgendwo außerhalb ein Objekt vom Typ A erzeugen und dann an die Methoden von B weiterreichen.
-
Also so dann:
int main(void) { A ObjectA; B ObjectB; ObjectB.run(ObjectA) }Oder mit Referenz oder Pointer ? War wäre denn schneller?
-
Referenzen dürften etwas schneller sein als Kopien, gerade wenn es um große Objekte geht (evt noch mit eigener Speicherverwaltung).
-
Danke schön!!!
