Verständnis Problem bei Funktionen die eine ref. zurück liefert
-
Ich bekomme immer bei folgender Konstellation einen Compiler Warning.
Was mach ich falsch bzw. wie würdet ihr das lösen?
class cLagerPlatz{ private: int _anzahl, int _produktID; public: void setAnzahl(int anzahl){_anzahl = anzahl;} int getAnzahl(){return _anzahl;} void setProduktID(int p){_produktID = p;} int getProduktID(){return _produktID;} } cLagerPlatz & const getLagerPlatz(int reihe, int ebene){ return lagerPlatz[reihe][ebene]; } void main(){ cLagerPlatz lager[10][10], *pLager; pLager = & getLagerPlatz(1,5); pLager->setProduktID(1212); pLager->setMenge(2323); }
FRAGE:
1. Warum mußich den den Rückgabewert von getLager() erst in eine Referenz umwandeln?
2. Wieso muß ich const in der Funktion angeben?
3. Wieso kann ich nicht einfach in der FunktiongetLagerPlatz(int reihe, int ebene){ return & lagerPlatz[reihe][ebene];}
zurück geben?
-
deine funktion liefert eine referenz zurueck.
pLager ist aber ein zeiger; d.h. der will eine adresse aufnehmen.
deshalb musst du das & (=adresse von) vor die funktion schreiben
(entspricht hier: adresse der von der funktion zurueckgegebenen referenz).wenn du
getLagerPlatz(int reihe, int ebene){ return & lagerPlatz[reihe][ebene];}
schreibst, muss der rueckgabewert auch ein zeiger sein:
cLagerPlatz* getLagerPlatz(int reihe, int ebene){ return &lagerPlatz[reihe][ebene]; }
schau dir am besten nochmal in einem buch den unterschied von zeigern und
referenzen an!
das &-zeichen hat zwei verschiedene bedeutungen (eigentlich noch mehr
binaere undverknuepfung).