Hallo zusammen,
ich habe einen Fehler gefunden, der sich durch das gesamte Buch und die Tribase-Engine zieht:
Der Operator new gibt im Fehlerfall unter C++ nicht NULL zurück, sonder wirft eine Exception vom Typ std::bad_alloc. Die Überprüfung auf NULL ist also unsinnig. Zwar kann man mit ein paar Tricks auch erreichen, dass NULL zurückgegeben wird, aber da das dann wieder C und nicht C++ wäre, ist das eher unschön.
In diesem Zug möchte ich auch einmal anregen, ob es nicht möglich wäre für eine nächste Auflage (falls es denn eine geben wird) die gesamte Engine auf (richtiges) C++/C++0x umzustellen, also:
- Exception-Sicherheit
- Nutzen von Exceptions zur Fehlermeldung
- Verwendung der STL oder von boost
- new/delete statt malloc/free
- namespaces (z.B. tb)
- Einsatz von Templates (z.B. TB_SAFE_RELEASE oder VertexBuffer)
- Referenzen statt Zeiger
Da die nächste Auflage ja sehr wahrscheinlich mit DirectX 10 oder 11 arbeitet, muss eh ein Großteil der Engine neu geschrieben werden. Da bieten sich die genannten Vorschläge an.