Refernz auf andere Klasse - tut nicht



  • Servus,
    ich wollte von der einen Klasse auf eine andere Klasse mithilfe einer Referenz zugreifen.

    Leider tut das nich so wie ich das will.
    Habe hier das Beispiel (hier zum posten alles in der h Datei)

    class haus
    {
      public:
    
      int iwert;
    
      haus()
      {
        iwert = 0;
      );
    }
    
    #include "Unit2.h"
    class zugriff
    {
       haus &ref;
    
       public:
    
       zugriff(haus &ref1)
       {
          this->ref = ref1;
       };
    
       void test (void)
       {
          int ix;
          ix = ref.iwert;  //Hier will ich zugreifen
       };
    };
    
    #include "Unit2.h"
    #include "Unit3.h"
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
        haus neu;
        zugriff zugr(neu);  //übergabe Referenz
        return 0;
    }
    

    Bei mir kommen immer folgende Fehlermedungen:
    [C++ Fehler] Unit2.h(14): E2188 Ausdruckssyntax
    [C++ Fehler] Unit3.h(14): E2210 Referenzelement 'haus::zugriff::ref' ist nicht initialisiert
    [C++ Fehler] Unit1.cpp(21): E2040 Deklaration nicht ordnungsgemäß abgeschlossen

    Kann mir jemand sagen wie mein/meine Probleme beheben kann ?
    Danke

    ich glaub ich bin ein wenig aus einem Holzweg, oder.



  • Versuchs mal hiermit:

    zugriff(haus &ref1):ref(ref1){}
    

    Gruß
    Entyl Sa



  • Hi

    da liegt dein Fehler:

    class zugriff
    {
       haus &ref;
    
       public:
    ...
    

    du musst

    haus ref;
    

    nehmen.

    Dann funktioniert das;

    Oder:

    #include "Unit2.h"
    class zugriff
    {
       haus *ref;
    
       public:
    
       zugriff(haus *ref1)
       {
          this->ref = ref1;
       };
    
       void test (void)
       {
          int ix;
          ix = ref->iwert;  //Hier will ich zugreifen
       };
    };
    
    int main(int argc, char* argv[])
    {
        haus neu;
        zugriff zugr(&neu);  
        return 0;
    }
    

    MfG eViLiSSiMo



  • wie entyl_sa bereits gesagt hat du musst eine referenz
    in der initialisierungszeile des konstruktors initialisieren.

    referenzen muessen immer genau einmal initialisiert werden!
    alle weiteren zugriffe mit '=' sind wertzuweisungen an die
    refernezierte variable.



  • Danke, es tut soweit.

    Also geht folgende Möglichkeit nicht:

    zugriff():ref(NULL){}  //Standartkonstruktor hinzufügen
       zugriff(haus &ref1):ref(ref1){}
    


  • solo schrieb:

    Also geht folgende Möglichkeit nicht:

    zugriff():ref(NULL){}  //Standartkonstruktor hinzufügen
    

    Jep, das geht nicht.
    Beachte:

    http://tutorial.schornboeck.net/referenzen.htm schrieb:

    Eine Referenz ist ein Aliasname für eine bereits existierende Variable. Eine Referenz existiert also nicht allein. Sie ist immer an eine Variable gebunden. Ändert man eine Referenz, so ändert man dadurch die Variable die durch die Referenz referenziert wird. Eine Referenz muss bei ihrer Erzeugung an eine Variable gebunden werden. Einmal gebunden, kann eine Referenz nicht mehr von der Variable die sie referenziert gelöst werden.



  • Ok danke, dann weiß ich ja jetzt warum es nicht funzen wollte.


Log in to reply