Zum Inhalt springen

Klasse in Klasse Problem


Jonsc1

Empfohlene Beiträge

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 :/

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast
Dieses Thema wurde nun für weitere Antworten gesperrt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...