本文介绍了如何在类重载时隐藏继承的 TObject 构造函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
看看这个类:
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?
推荐答案
只要你重载了名为 Create
的构造函数,你就不能在派生时隐藏无参数的 TObject
构造函数来自 TObject
.
So long as you have overloaded constructors named Create
, you cannot hide the parameterless TObject
constructor when deriving from TObject
.
此处讨论:http://www.yanniel.info/2011/08/hide-tobject-create-constructor-delphi.html
如果您准备在您的类和 TObject
之间放置另一个类,您可以使用 安迪豪斯拉登的技巧:
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;
这篇关于如何在类重载时隐藏继承的 TObject 构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!