Tôi đã thêm một biến lớp vào lớp cơ sở của phân cấp lớp sâu. Đó là một số nguyên dùng để đếm số lượng cá thể được tạo cho mỗi loại lớp. Nhưng tôi đã gặp rắc rối.Biến Delphi Class cho mỗi lớp
Với ví dụ:
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;
Tôi cho rằng tôi có thể sử dụng var lớp để lưu trữ các số trường hợp tạo mỗi lớp, nhưng điều này dường như không phải là trường hợp.
Kiểm tra TBaseClass.fCreated
trả về cùng giá trị như TDescendant.fCreated
, thay đổi một thông qua thanh tra thay đổi khác, do đó, nó hoạt động như thể fCreated
là một var toàn cục.
Tôi mong đợi fCreated
được duy trì cho mỗi loại lớp, không phải là vấn đề phải không? Tôi đang thiếu gì?
Nhận xét tương tự đã được đưa ra ở đây: http://stackoverflow.com/a/72496/12170 – PatrickvL
Hacky nhưng làm những gì tôi muốn –