Zeiger-Problem, zeigt auf NULL
-
Kleines Problem, aber ich seh meinen Fehler nicht:
void Triquadtree::ContainBox(Triquadtree *quad) { quad=this; if (quad==NULL) puts("falsch"); else puts("okay"); } void Triquadtree::Connect(void) { Triquadtree *quad=NULL; ContainBox(quad); if (quad==NULL) puts("falsch"); else puts("okay"); }Ich erwarte jetzt zweimal "okay" zu lesen, erhalte aber einmal "okay" und danach "falsch". Und ich sehe nicht, warum der Zeiger beim Sprung aus der Funktion verbogen wird. Hat jemand eine Idee?
Viele Dank, Dee
-
Hallo,
der Zeiger wird immer noch by Value an ContainBox übergeben, daher änderst du nicht den Zeiger in Connect. Um dies zu erreichen, brauchst du einen Triquadtree **pp, dann kommst du auch an den Zeiger ran.
MfG
GPC
-
dee.dw schrieb:
Und ich sehe nicht, warum der Zeiger beim Sprung aus der Funktion verbogen wird.
Er wird nicht verbogen, er bleibt gleich. Folgendes Beispiel ist analog, die Lösung ist auch die gleiche:
void f(int a) { a = 42; cout << "a = " << a << endl; } int main() { int a = 0; f(a); cout << "a = " << a << endl; }Wenn dir das jetzt nichts sagt musst du dich mal über die Begriffe Call-by-Value und Call-by-Reference schlau machen.
-
@GPC: Ja, danke das war's... Hab vergessen, daß ich ja auf den Zeiger zeigen muß, wenn ich den verändern will.
Dankesehr.@Bashar: Dir auch danke...

Gruß, Dee