Fortschritt:
Die Resourceklasse ist nun konventionell als Interface konstruiert – Schade, mein Ansatz wäre ziemlich cool gewesen – aber mir rennt die Zeit davon und die Lösung kommt mir nicht. Die Smart-Pointer stehen nun. Aber:
Probleme:
Garbage Collection macht nicht das was ich will: Aus irgendeinem Grund stürzt der Vorgang ab wenn ich meine MemPointer aufräumen will. Die Lösung kommt erst nach einem verlorenen Tag: Meine deadObjects-list ist eine Liste aus Pointern zu IMemObjects. Da kommen auch die SmartPointer rein. Die sind allerdings selbst keine Pointer -sondern liegen auf dem Stack. Kein Wunder also dass ich einen Assert-fail bekomme wenn ich versuche sie mittels delete zu löschen. Die Frage ist nun wie ich erkennen kann ob es sich um eine Stack- oder eine Heap-Variable handelt.
Auf die Lösung bin ich ein bisschen stolz: Ich überlade einfach den ‘new’ Operator und setze ein Flag, nun weiß ich ob ein Objekt auf dem Heap liegt. Das Flag wird beim löschen abgefragt, Objekte auf dem Stack werden NULL gesetzt die restlichen konventionell freigegeben.
ToDo:
Als nächstes ist der Settingsmanager und der Kernel dran. Ausserdem wird meine erste Resource erzeugt, eine Stringtable in die ich einige für Logging und Profiler nötige Strings ablegen kann.
Tags: C++, Entwicklung, Klabautermotor, OpenGL

1 comment
Comments feed for this article
Trackback link
http://www.p-shuttle.de/joh/2008/11/03/woche-3/trackback/
29. November 2008 at 11:10
Jonny Cok
cool den new Operator will ich auch ma überladen