Von einer Klasse auf eine andere Zugreifen
-
Ich bin gerade dabei ein Netzwekspiel zu coden.
Dabei gibt es die Klasse Player die jeweils für einen SPiele zuständig ist.
Von dieser Klasse muss ich auf die eines anderen Players zugreifen können wenn z.B. eine Chat Message geschickt wird.
Also muss ich aus der Klasse pl0 auf die Klasse pl1 zugreifen.
in der main.cpp sind alle Klasse global so definiert:Player pl0; Player pl1; Player pl2; Player pl3;
Wenn ich jetzt z.B: aus der Klasse pl3 folgendes einbaue:
pl3.send_chat_message("test");
sagt mir g++:
player.cpp: In member function `void Player::send_chat_message(std::string, std::string)': player.cpp:37: Fehler: `pl3' undeclared (first use this function) player.cpp:37: Fehler: (Each undeclared identifier is reported only once for each function it appears in.) main.cpp: At global scope: main.cpp:41: Fehler: `Player pl3' used prior to declaration
Wie kann ich also z.B. von der Klasse pl0 auf die Klasse pl3 zugreifen?
-
Du kannst innerhalb der Klasse nicht auf eine andere Objektinstanz zugreifen, da sie nicht im selben Gültigkeitsbereich liegen. Also musst du deinem Spielerobjekt zum Beispiel im Konstruktor eine Referenz auf andere Spielerobjekte übergeben, um darauf zugreifen zu können. Eine bessere Variante wäre aber, eine Klasse zu schreiben, die die einzelnen Spielerobjekte verwaltet und jedes Spielerobjekt dann eine Referenz auf die Verwaltungsklasse erhält. Damit könntest du dann auch die Interaktion der einzelnen Spieler in dieser Verwaltungsklasse implementieren und hättest einen höheren Abstraktionsgrad.
-
danke für die Idee
werd ich gleich mal machen.
-
ich würd mich mal über ein mini beispiel, einer solchen verwaltungsklasse freuen!!