Danke! (War: Sortieren mit binärem Baum)
-
Vielen Dank für die Hilfe! Es funktioniert jetzt tatsächlich
Ich glaube die Abfrage this==NULL tut sogar genau das, was ich von ihr erwartete
Jedenfalls funktioniert die folgende insert Funktion einwandfrei:template <typename object> bst<object> *bst<object>::insert(object v) { if (this == NULL) { bst<object>* node = new bst<object>(v); return node; } if (v < value) this->left = left->insert(v); else this->right = right->insert(v); return this; }Und aufgerufen wird das ganze mit:
bst<int>* tree = new bst<int>(vec[0]); for (int i=1; i<vec.size(); i++) { tree->insert(vec[i]); }
-
Sorry, falscher Ort. Kann man diesen Post bitte an folgende location verschicken:http://www.c-plusplus.net/forum/viewtopic-var-t-is-252764.html? Danke!
-
Wenn this==NULL ist dann ist irgendwo etwas völlig faul...
-
Wir hatten das doch vor 2 Tagen oder so schon mal...
this kann nicht NULL sein... vll wenn man es mit aller gewalt versucht - aber wahrscheinlich auch eher nicht...btw: n1 threadtitel... nicht.
bb
-
Bitte!
-
Es funktioniert bei Dir vielleicht, ist aber verboten und führt offiziell zu undefiniertem Verhalten. Das ist jetzt übrigens das dritte Mal, dass ich das sage.
zeiger->funktion();ist laut C++ ISO Standard äquivalent zu(*zeiger).funktion();, siehe 5.2.5 ("Class member access") Abschnitt 3. Das Dereferenzieren von Nullzeigern aber logischerweise verboten. Dein Hack geht spätestens dann schief, falls die Funktion eine virtuelle ist -- oder aber schon bei einem anderen Compiler, der etwas pingeliger ist.Gruß,
SP