Am Freitag, den 08.12.2006, 10:50 +0200 schrieb Graeme Geldenhuys:
> Bottom line: How can we hide the constructor of a class?  As far as I
> can see you cannot decrease the visibility of a method compared to
> it's inherited class. Why shouldn't we be allowed to?  C++, C# does!
> 
> I found this by trying to implement a True Singleton in Free Pascal /
> Delphi.  For those that don't know, a Singleton is a Design Pattern
> that allows only one instance of a class.  It seems it is impossible
> to do in Free Pascal / Delphi.  :-(
> 
> See attached code for a demonstration of the problem.

One working solution is to use a global var. This is bad but acceptable
for a singleton imo. If would be nice if the variable could be hidden.
Smth like this:

...
var
        _mySingleton: TSingleton;


constructor TSingleton.create;
begin
        if not(assigned(_mySingleton)) then
        begin
                inherited;
                ... do initializations ...
                _mySingleton := self;
        end;
end;

initilization
        _mySingleton := NIL;
end.

HTH,
Marc


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to