我已将类变量添加到深层类层次结构的基类中。它是一个整数,用于计算每个类类型创建的实例数。但是我遇到了一个问题。
举个例子:
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;
我假设我可以使用 class var 来存储每个 class创建的实例数,但事实并非如此。
检查TBaseClass.fCreated
返回与 相同的值TDescendant.fCreated
,通过检查器更改一个值会更改另一个值,因此它的行为就像fCreated
是单个全局变量。
我希望fCreated
每个班级类型都得到维护,这不是重点吗?我错过了什么?