Agregué una clase de variables a la clase base de una jerarquía de clases profundas. Es un número entero destinado a contar el número de instancias creadas por tipo de clase. Pero me he encontrado con un problema.Variable de la clase Delphi por clase
dado el ejemplo:
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;
que supone que puedo usar la clase var para almacenar el número de instancias creadas por clase , pero esto no parece ser el caso.
Inspección TBaseClass.fCreated
retornos mismo valor que TDescendant.fCreated
, el cambio de una a través de inspector cambia la otra, por lo que se comporta como si fCreated
es una sola var global.
Esperaba que fCreated
se mantuviera por tipo de clase, ¿no es ese el punto? Qué me estoy perdiendo ?
El mismo comentario ya fue dado aquí: http://stackoverflow.com/a/72496/12170 – PatrickvL
Hacky pero hace lo que yo quería –