Fortschritt:
-
Das Design steht soweit:
Alle Objekte werden vom IMemObjekt abgeleitet. Dieses kümmert sich um Garbage Collection und grundsätzliche Funktionalität wie toString funktion, Zurückgeben der Objektgröße usw. -
Davon abgeleitet werden die Manager (Ressourcen, Kernel, Logging, Sound….) sowie inGame-Objekte, welche wiederum als Interface für zeichenbare und nicht zeichenbare Objekte dienen.
-
Von den Managern werden die benötigten Objekte und Subsysteme abgeleitet (Resourcen, Streams…)
-
→ das Ganze wird fast vollständig top-down programmiert.
Implementiert sind jetzt ein Singleton, das „Über-Objekt“, ein einfaches to-String Makro, sowie ein Macro zum Zurückgeben der Größe. Für die Bestimmung von Engpässen und Performancefressern gibt es jetzt einen selbstgeschriebenen Profiler.
Probleme:
In C++ ist Vererbung sehr unterschiedlich zu Java implementiert. Während in Java eine abhängige Instanz von allen Parent-Klassen erzeugt wird ist dem in C++ nicht so: im Grunde besteh keine Abhängigkeit zwischen abgeleitetem und ableitendem Objekt – Das macht die Implementierung einer toString-Funktion sehr schwierig. Fürs Erste gebe ich mich damit zufrieden nur einen Default-toString auszuführen, dem man zusätzliche Attribute für jede abgeleitete Klasse mitgeben kann – eine doppelt abgeleitete Klasse erbt also nur die toString Funktionalität des IMemObjects, nicht die der unmittelebaren Parent-Klasse.
ToDo:
Ein Resourcenmanager ist der nächste Schritt, mit dem ich String-Tables laden kann, welche ich dringend für meinen Profiler brauche. Ausserdem wäre ein Smart-Pointer toll, damit ich einen Garbage-Collector implementieren kann.
