Woche 2 (20.10 – 26.10)

Fortschritt:

Der Resourcenmanager hält nun alle Resourcen in einer Map, kann sie zurückgeben nach Adresse, Handle oder Pfad. Der Manager lagert Resourcen nach Priorität, letzer Nutzung und Größe aus, wenn die Resourcen eine vorgegebene Größe erreichen. Die Resourcen selbst sind ein Template, welches die Typspezifischen Funktionen spezialisiert.

Die ToString Funktion ist nun genauso wie die getClassName- und getSize-Funktion ein Macro. Auf diese Weise kann ich die Makroargumente zur Compilezeit festlegen und muss so keine Variablen und Funktionen nutzen, die ja während der Laufzeit mit Werten initialisiert werden müssen. Coole Sache.

Probleme:

Es geht nur sehr zögerlich voran:

Mit dem Resourcemanager gibt es Probleme. Ursprünglich hätte ich die Resourcen gerne als Templates gehabt, bei denen nur eine Load-Funktion pro genutztem Typ spezialisiert werden muss – Allerdings ist es gar nicht so leicht das ganze in eine STL-Map zu packen, dort muss ich dann nämlich mit dynamischen casts um mich werfen. Mein Ansatz für eine neue Resource nur eine (Load-)Funktion zu spezialisieren scheint nicht zu klappen – Für die dynamic_casts bräuchte ich eine Kontrollstruktur welche mir den richtigen Typ castet… die Idee einen User später in meinem fertigen Manager rumcoden zu lassen ist mir weniger lieb als wenn er Objekte ableiten muss.

Ausserdem stecke ich viele Stunden bei kryptischen Fehlern, welche nach unrelevanten Codeänderungen auftreten. Nach langem langem Suchen bemerke ich dass ein fehlendes Leerzeichen(!) am Ende einer Headerdatei schuld war. o.O

ToDo:

Das Dilema mit dem Manager lösen. Dann endlich Smart-Pointer implementieren.

Tags: , , , ,