Jonsc1 Geschrieben 5. Dezember 2009 Geschrieben 5. Dezember 2009 Habe ein kleines Problem, und mein Wissen reicht nicht aus um das zu lösen... Angenommen ich definiere mir eine Klasse door (nur als Beispiel): class door { private: bool isOpen; public: open(); }; und nun eine andere Klasse die eine Instanz von door enthält: class house { private: std::string needIt; public: door door_1; }; Und nun habe ich die blöde Situation, das door zum ausführen der Funktion open() den String needIt benötigt, der aber eine Variable von house ist.... trotzdem will ich einen Aufruf à la house house_1; house_1.door_1.open() möglich machen... Nun also die Frage: Wie stelle ich das an? Gibt es eine Möglichkeit in einer Instanz einer Klasse, die selbst eine Membervariable einer Instanz einer anderen Klasse ist, festzustellen, welche diese "übergeordnete" Instanz ist, und auf ihre Member zuzugreifen? Das ist jetzt warscheinlich doof formuliert, aber ich weiss nicht wie ich es anders ausdrücken soll :/
getCppKenntnisse() Geschrieben 5. Dezember 2009 Geschrieben 5. Dezember 2009 Hi Jonsc1, Wenn ich jetzt dein Problem richtig verstanden habe, dann sollte das schon die Lösung sein: house house_1; house_1.door_1.open(house_1.getNeedIt) Das ist zwar nicht ganz das was du machen wolltest aber ich denke das sollte gehen, du kannst ja die open funktion dementsprechend schreiben: bool open(std::String inStr){...} bool open(){...} aber die übergeordnete Klasse rausfinden ist eigentlich garnicht nötig weil ja jedes objekt sowieso uniq ist. ich meine damit dass es ja nur ein house_1 gibt und nur ein house_1.door_1 hoffe das hilft dir mfg
Jonsc1 Geschrieben 5. Dezember 2009 Autor Geschrieben 5. Dezember 2009 Hi, danke schonmal für die Antwort! Ja, das wäre prinzipiell schon eine Lösung, aber das würde in meinem Code sehr unübersichtlich werden, da ich nicht nur einen String benötige, sondern mehrere... Ich muss das wohl etwas konkretisieren und das Problem genauer umreissen: Ich schreibe gerade einen Bot für ein Browsergame um mich mit HTTP und Sockets auseinanderzusetzen (finde das ist ein sehr interessantes Beispiel). In diesem Browsergame kann man nun Gebäude bauen. Um das im Programm möglichst übersichtlich zu gestalten stelle ich das mit Hilfe von 2 Klassen da: class account class building Ich logge mich in den Account mittels der Funktion account.login(); ein. Dabei werden bestimmte Cookies übermittelt, deren Inhalt ich in std::strings speichere. Diese Strings sind Membervariablen der Klasse account. Die Klasse building besitzt eine Memberfunktion namens build(); Diese Funktion benötigt (da sie mit dem Webserver zum 'in Auftrag geben' des Gebäudes kommuniziert) den Inhalt der Cookiestrings. Sprich, ich möchte im Programm selbst später sehr einfache Aufrufe ermöglichen: account acc; acc.login; acc.silo.build(); // Silo ist vom Typ building -> loggt sich ein und gibt den Ausbau des Silos in Auftrag Ich finde von der Programmlogik her gehören die Strings mit dem Inhalt der Cookies ganz klar in die Klasse account. Ich benötige sie aber auch in der Klasse building. Da die Daten nicht konstant gleichbleibend sind, sondern die Klasse account z.B. einen Re-Login durchführen kann, müsste building.build() irgendwie Zugriff auf diese Daten haben, zumindest wenn ich im Quelltext unschöne Aufrufe wie acc.silo.build(acc.getCookiestring() ); vermeinden will.... Kann ja gut sein das das nicht möglich ist ^^ Wollte nur ein paar Profis fragen bevor ich mich damit abfinde!
Klotzkopp Geschrieben 5. Dezember 2009 Geschrieben 5. Dezember 2009 Ich schreibe gerade einen Bot für ein Browsergame Das verstößt mit hoher Wahrscheinlichkeit gegen die Nutzungsbedingungen des Spiels.
Empfohlene Beiträge