I am using this code
type
TSomeClass = class(TOBject)
private
class var InstanceCount : integer;
class var TotalInstanceCount : integer;
public
class function instances: integer;
class function totalInstances: integer;
constructor Create;
destructor Destroy;
end;
constructor TSomeClass.Create;
begin
inherited Create;
Inc(InstanceCount);
Inc(TotalInstanceCount);
end;
destructor TSomeClass.Destroy;
begin
Dec(InstanceCount);
inherited;
end;
class function TSomeClass.instances;
begin
Result := InstanceCount;
end;
class function TSomeClass.totalInstances;
begin
Result := TotalInstanceCount;
end;
I want to make an instance counter and I set some class variables as private. The question is very easy, just look at this picture:
As you can see in the red box, there are the class variables that I have declared as private. I don't want them to appear. I only want the public class functions to be able to show the counters. What can I do?
As explained in the documentation, A class's private
section can be accessed from anywhere within the unit where that class is defined. In order to avoid this, and eliminate access to these private class members from elsewhere in the same unit, use strict private
instead.
Of course, if your application's design calls for it, you could also move this class over to another unit, which in turn would produce the effect you're looking for as well.