Gleiche Instanzen verhindern
-
Hi!
Ich möchte verhindern, dass von meiner Klasse mehrere Instanzen mit dem
gleichen Inhalt erstellt werden.Vereinfachtes Beispiel: Ich habe eine Klasse, die natürliche Zahlen re-
präsentiert. Falls der Nutzer eine Instanz mit der Zahl 3 anlegt und kurze
Zeit später noch einmal eine Instanz mit der Zahl 3 anlegt, ist das ja
Speicherverschwendung (in diesem Bsp. natürlich nicht).
Kann ich das irgendwie verhindern und z.B. in solchen Fällen im Konstruktor
einen Pointer auf die alte Instanz zurückgeben oder so...MfG,
EnERgYzEr
-
Dazu müsstest du eine Liste führen, was für Werte es schon gibt und den Konstruktor hinter einer "Konstruktormethode" verbergen. IMHO ist es das nicht wert.
-
Spontan würde ich sagen suchst du nach reference counting, wie man es zum Beispiel bei string Implementationen finden kann. Dabei wird beim Aufruf des Copyconstructors nicht der String kopiert, sondern nur eine Referenz auf den Originalstring erstellt, erst wenn du dann versuchst den String zu ändern, wird er tatsächlich kopiert.
Schau mal ob du mit google ein paar Informationen darüber findest!
-
Optimizer schrieb:
IMHO ist es das nicht wert.
Es geht um Texturen, wo der Speicher schnell gefüllt wird
-
<OT>
Imho sollte der User selbst drauf schauen ob er nicht eine bereits geladene Textur erneut lädt, gerade bei einem rechenzeitfressenden Programm sollte unnötiger Overhead (wie dieser hier) vermieden werden.Texturen werden zudem sowieso am besten einmal im ganzen Programm geladen. Bzw. einmal pro Teilabschnitt (Level) und nicht jedesmal.
</OT>MfG SideWinder
-
Ich glaube ich werde es ähnlich, wie bei anderen Engines machen und einfach
einen Textur Manager basteln, der das alles kontrolliert.Aber danke für eure Antworten