On Mon, Apr 6, 2009 at 10:37 PM, Léo Willian Kölln <leoko...@gmail.com> wrote: > No. > See my singleton example:
How did I guess it was going to be about implementing a Singleton. This issue has been raised a thousand times in FPC and Delphi circles. :) > > TLoggerGeral = class Which means you are descending from TObject. > private > {$IFDEF WINDOWS} > class var FInstance : TLoggerGeral; > {$ELSE} > {$STATIC on} > FInstance : TLoggerGeral; static; > {$ENDIF} > > constructor Create; Which means you are trying to lower the constructor TObject.Create from public to private. > > A normal singleton and it complain! I have a much easier "lazy man's" singleton for you... It's not 100%, but then, I have *never* seen a singleton implementation in Delphi or FPC that is 100%. Simply access the singleton via the gMySingleton method. eg: gMySingleton.DoSomethingCool; ======================== interface TMySingleton = class(TObject) ... end; function gMySingleton: TMySingleton implementation var uMySingleton: TMySingleton; function gMySingleton: TMySingleton; begin if not Assigned(uMySingleton) then uMySingleton := TMySingleton.Create; result := uMySingleton; end; [...snip the rest of TMySingleton implementation...] initialization uMySingleton := nil; finalization uMySingleton.Free; end. ======================== The reason you can't lower the visibility of the constructor or any method for that matter... A class interface (implementation section) , even for TObject as in your example, is a contract of how you can use that class and what is available to you. By lowering the visibility of a method or constructor in a descendant class, you are breaking the contract previously defined. This is a BIG no-no, hence the reason it is not allowed. Regards, - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://opensoft.homeip.net/fpgui/ _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel