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 - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal