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 ganz

    Hier 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.


Anmelden zum Antworten