@Blue: Da haben wir uns gerade verpasst
Ja, das sehe ich auch so, d.h. die beste Lösung wäre es eigentlich einen Ressourcen-Manager "frei Haus" mitzuliefern, welcher Handles zurückgibt. Soweit habe ich das bisher auch implementiert. Die Handles können zu Zeigern dereferenziert werden, und wenn sie das tun, dann wird die Ressource erneut geladen, falls sie nicht mehr existiert. Sprites und generell andere Objekte erhalten also im Endeffekt Handles auf die Ressourcen.
@DeKugelschieber: Das ist immer noch nicht, was ich wissen will. Wie stellt der Destruktor sicher, dass die Ressource IN JEDEM FALL gelöscht wird, und nicht halb-gelöscht im Speicher verbleibt? Um das zu verdeutlichen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
class Foo
{
public:
~Foo() { throw exception; }
}
/* In std::shared_ptr */
~std::shared_ptr()
{
delete ptr; // <- Was machen wir jetzt mit der Exception? Eventuell sind Member von Foo noch gar nicht freigegeben worden.
}
|