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