Ich habe eine Klassenvariable zur Basisklasse einer tiefen Klassenhierarchie hinzugefügt. Es ist eine ganze Zahl, die die Anzahl der pro Klassenart erstellten Instanzen zählt. Aber ich bin auf ein Problem gestoßen.Delphi Klassenvariable pro Klasse
das Beispiel Gegeben:
TBaseClass = class
private
class var fCreated: integer;
public
class function NewInstance: TObject; override;
end;
TDescendant = class(TBaseClass)
end;
...
class function TBaseClass.NewInstance: TObject;
begin
result := inherited NewInstance;
inc(fCreated);
end;
ich davon aus, dass ich die Klasse var die Anzahl der Instanzen pro Klasse erstellt speichern kann, aber dies scheint nicht der Fall zu sein.
Inspizieren TBaseClass.fCreated
kehrt gleichen Wert wie TDescendant.fCreated
, ändert man über Inspektor ändert die andere, so dass er sich so verhält, als ob fCreated
ist eine einzige globale var.
Ich erwartete fCreated
pro Klassenart beibehalten werden, ist das nicht der Punkt? Was vermisse ich ?
Der gleiche Kommentar wurde bereits hier gegeben: http://StackOverflow.com/A/72496/12170 – PatrickvL
Hacky aber tut, was ich wollte –