Fuktion eines variablen Objektes auserhalb der Klasse aufrufen?
-
Heyho!
Habe eine Klasse "Spieler" in welcher eine einige Funktionen aus der Klasse Dorf aufgerufen werden. Ein Spieler kann mehrere Dörfer haben. Wie kann ich nun über den Spieler diese Dorf-Funktionen aufrufen lassen, ohne zu wissen, in welchem Dorf sich der Spiler gerade "befindet". Kann man das irgendwie umsetzten, dass jedesmal wenn das Drf gewechselt wird irgednwo eine Art 'Schalter' umgelegt wird (dh nur eine Variable gesetzt wird) und schon Alle Funktionen für das jeweilige Dorf aufgerufen werden?
Danke!
-
Klar, führe eine Dorf* current_/position_/.., Membervariable für deinen Spieler ein, setze sie entsprechend wenn das Dorf gewechselt wird und rufe die Funktionen darüber auf. Falls der Spieler auch in keinem Dorf sein kann, ist der Zeiger 0. Achtung, du darfst ihn dann nicht dereferenzieren.
-
Aber wie rufe ich dann die Funktionen dafür aus?
Stehe grad ein wenig auf der Leitung, hast du vielleicht einen Codeschnipsel für mich?
Kann ich einfach eine Variable vor den Punktoperator schreiben?
Oder meinst du
void switchVillage(&dorf) { dorf *zeiger; if (dorf = 1) { *zeiger dorf; } }und dann über
zeiger.get_einwohner();oder wie?
-
Wie ein Zeiger funktioniert solltest du schon wissen..
class player { village* current_village_; public: void switch_village(village& to) { current_village_ = &to; } void foo() { if (current_village_ != nullptr) // Auf nullptr testen, falls es diesen Zustand gibt. Ansonsten vll assert/exception. { (*current_village_).foo(); current_village_->bar(); // Der -> Operator ist hier lieber gesehen. } } };
-
sorry, wenn ich nerve, aber wie kann ich ein Objekt von dem Dorf in der Spielerklasse erzeugen, wenn die Dorf von der Spieler abgeleitet ist? Der Compiler meckert über dadrüber... (Nicht vorhanden...)
-
wtf... jetzt nimmt er es an. Auf einmal o.O
Danke für die Hilfe!

-
iGelb schrieb:
sorry, wenn ich nerve, aber wie kann ich ein Objekt von dem Dorf in der Spielerklasse erzeugen, wenn die Dorf von der Spieler abgeleitet ist?
Dorf ist von Spieler abgeleitet?

Das berüchtigte Superwurstbrot des Todes hat wohl abermals zugeschlagen.
-
iGelb schrieb:
wie kann ich ein Objekt von dem Dorf in der Spielerklasse erzeugen, wenn die Dorf von der Spieler abgeleitet ist? Der Compiler meckert über dadrüber... (Nicht vorhanden...)
Dorf ist von Spieler abgeleitet? Wieso?
-
Nein, ich habe C++ von A bis Z nicht gelesen.
Hab gerade selber festgestellt dass das keinen Sinn macht.^^
-
iGelb schrieb:
Hab gerade selber festgestellt dass das keinen Sinn macht.^^
Und wieso macht es keinen Sinn?
-
Da Dorf eig. nichts von Spieler erben braucht...
-
iGelb schrieb:
Da Dorf eig. nichts von Spieler erben braucht...
Mit dieser Aussage muss ich leider annehmen, dass du Vererbung nicht verstanden hast. Sie bedeutet nämlich "is-a"-Beziehung. Das bedeutet, überall wo ein Foo erwartet wird, kannst du ein Bar reinstecken, weil Bar auch ein Foo ist. Ein Dorf ist kein Spieler, und damit ist Vererbung ausgeschlossen.
class Foo {}; class Bar : public Foo {};
-
Hä?
Ich hab Vererbung schon verstanden! (Glaub ich zumindest!)
Ich mein nur, Dorf muss nichts von Spieler erben, da sie keine gemeinsamen Member besitzen.