Take a look at this class:
TTest = class(TObject) public constructor Create(A:Integer);overload; constructor Create(A,B:Integer);overload; end;
Now when we want to use the class:
var test: TTest; begin test:= TTest.Create; //this constructor is still visible and usable! end;
Can anyone help me with hiding this constructor?
So long as you have overloaded constructors named Create
, you cannot hide the parameterless TObject
constructor when deriving from TObject
.
This is discussed here: http://www.yanniel.info/2011/08/hide-tobject-create-constructor-delphi.html
If you are prepared to put another class between your class and TObject
you can use Andy Hausladen's trick:
TNoParameterlessContructorObject = class(TObject) strict private constructor Create; end; TTest = class(TNoParameterlessContructorObject) public constructor Create(A:Integer);overload; constructor Create(A,B:Integer);overload; end;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With