002
18.01.2010, 20:03 Uhr
banshee
|
Zitat von 0xdeadbeef: |
Was die normalize-Methode in Vec angeht, nehme ich an, dass Vec oder VecCoords einen operator/= hat, der dort aufgerufen wird.
|
Ja, das ergibt Sinn. Da hätte ich auch selbst drauf kommen können.
Zitat von 0xdeadbeef: |
Die Casts lassen in Verbindung mit der in C++ etwas merkwürdigen Schreibweise ::sqrt darauf schließen, dass der Autor des Codes noch auf die alte C-Bibliothek zurückgreift (und dabei übersieht, dass sqrt in C einen double erwartet). Vermutlich soll das eine Compilerwarnung auflösen.
|
Das verstehe ich noch nicht so ganz. ::sqrt soll ja anscheinend verhindern, dass die sqrt() aus VecHelper sich wieder selbst aufruft. Der Aufruf ::sqrt führt mich auch in die math.h. Gibt es denn in C++ eine neuere Mathelib? Ich dachte immer, auch da wird math.h bzw. cmath noch mitbenutzt?! Wenn ich mit der Maus jedenfalls über den Aufruf fahre, kriege ich mehrere Varianten der Funktion angezeigt: float, double und long double. Wenn ich also ::sqrt mit einem int aufrufe, castet der Compiler doch sowieso implizit nach float und auch der Rückgabetyp wird wieder implizit nach int gecastet. Wo wird da jetzt noch eine Warnung ausgelöst und vor allen Dingen, welchen Sinn hat das, sich im eigenen Code Warnungen zu schmeißen? |