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