Graeme Geldenhuys schreef:
On 12/8/06, Jonas Maebe <[EMAIL PROTECTED]> wrote:
Quote:

"You should not change the access modifier for inherited members."

So it's possible but discouraged, and they give warnings (and
sometimes errors) for it with the recommendation "Do not exclude a
warning from this rule."

There is a lot of things in life we shouldn't do, but we do.  :-)
At least give us the choice, maybe via a compiler directive and keep
the compiler warning in place.  That way we can use it responsibly
when required, as in the case of implementing a true singleton. I'm
sure there are more examples. As it stands currently (my sample
singleton code) the developer can still screw up by creating a new
instance instead of going through the global function.


I think it cannot be prevented.

Suppose you could hide the constructor and TSingleton.Create was not visible, I still could create a TSingleton object and call the TObject.Create on it.

var
  Singleton1, Singleton2: TSingleton;
begin
  Singleton1 := TSingleton.CreateInstance;
  TObject(Singleton1).Create;
  Singleton2 := TSingleton.CreateInstance;
  TObject(Singleton).Create;
  // now there are two Singleton objects.
end.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to