Referenzen auf Gültigkeit prüfen?
-
Gibt es eine elegante Möglichkeit, eine zurückgegebene Referenz auf Gültigkeit zu prüfen? Wie beim Zeiger per
if (Referenz == NULL) ...geht es ja leider nicht.

-
Es gibt keine NULL-Referenz - eine Referenz zeigt per Definition auf einen gültigen Wert.
-
Das geht nicht.
[edit]zu spät[edit]
-
CStoll (off) schrieb:
Es gibt keine NULL-Referenz - eine Referenz zeigt per Definition auf einen gültigen Wert.
Man kann trotzdem böse Dinge machen

int& boom() { int a; return a; }Ist aber undefiniert und kan kann auch nicht überprüfen ob so was passiert. Des weiteren ist sowas ja auf einen Programmfehler zurück zu führen, während der 0-Zeiger oft ein Fehlerindikator ist.
Gruß
-
Ein guter Compiler würde zumindest warnen

-
Ungultige referenzen können immer mal passieren.
Und ich glaube, da warnt niemandint* a = new int; int& b = *a; delete a;
-
CStoll (off) schrieb:
Es gibt keine NULL-Referenz - eine Referenz zeigt per Definition auf einen gültigen Wert.
Nicht ganz, eigentlich gehen wir nur davon aus, dass sie etwas referenziert. Nirgends steht, dass eine Referenz auf etwas verweisen muss. Wir können es aber eh nicht überprüfen.
-
templäd schrieb:
Ungultige referenzen können immer mal passieren.
Und ich glaube, da warnt niemandint* a = new int; int& b = *a; delete a;Selbstverständlich warnen die meisten Compiler vor so was, du musst nur den Warning-Level richtig einstellen.

-
Wenn du auf Gültigkeit prüfen willst, nimm einen Pointer.
Aber der kann auch ungültig sein, dann evtl. ein SmartPointer...