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äß abgeschlossenKann mir jemand sagen wie mein/meine Probleme beheben kann ?
Dankeich 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.