Referenz - Probleme beim zugriff
-
Hallo,
ich habe zwei Klassen. Ich will von der einen Klasse auf die andere Klasse mit einer Referenz zugreifen. Aber irgendwie tut das nicht so ganzHier mein bisheriger Code:
class Feld { private: //.... public: Feld(); int ifeldhoehe; class Figur figur(Feld); void test(void) { figur.hole_wert(); //geht nicht } //... };
und hier die andere klasse:
class Figur { class Feld &spielfeld; int iposy; //aktuelle Position der Figur public: Figur(Feld &feld):spielfeld(feld) { iposy = 0; ifigur_hoehe = 100; } bool bewege_nach_oben (void) { if(spielfeld.ifeldhoehe >= iposy + 1) //zugriff auf Feld funktioniert iposy += 1; } int Figur::hole_wert (void) { return iposy; } //..
Habe unwichtige Codezeilen entfernt. Im meinem Code habe ich es auch noch in H und cpp Dateien aufgeteil. Ich will jetzt nur wissen warum ich nicht figur.hole_wert machen kann im der Klasse Feld
-
lass 'class' vor feld weg,dann muesste es gehen.
was auch immer
-
Wie wärs wenn du das Ding im Konstruktor initialisierst und nicht in der Klassendefinition?
-
geht nicht:
zu 1: Wenn ich class weg lasse dann kommt immer folgend Fehlermeldung "Typname erwartet"
zu 2:
Wenn ich es dynamisch mache und es im Kontruktor initialisiere kommt immer
[C++ Fehler] Feld.h(19): E2108 Ungültige Verwendung von typedef 'Feld'
ich habe so versucht:class Feld { private: int ifeldbreite; int ifeldhoehe; public: Feld() { figur = new Figur(Feld); ifeldbreite = 0; ifeldhoehe = 0; } class Figur *figur;
Was soll ich nun machen dass es tut ?
Den kompletten Quellcode posten ? Kann mir irgend jemand sagen wo mein Fehler ist. Ich denke normalerweise müsste der Code reichen. Brauche wenn möglich relativ schnell eine antwort. DANKE
-
Ich glaube du suchst
this
-
'Feld' ist eine Klasse, man kann aber Funktionen (wie dem Figur-Konstruktor) nur Werte (Zahlen, Zeiger, Objekte, ..) uebergeben.
'this' ist immer ein Zeiger auf das Objekt "in dem Du dich befindest". Um der Figur eine Referenz auf das eigene Feld-Objekt mitzugeben, muss es "figur = new Figur(*this);" heissen.
-
Danke es tut. Ich habe es davor schon mit this versucht. Aber dabei habe ich immer das "*" vergessen. Danke.