本文介绍了如何在类重载时隐藏继承的 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 构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-07 21:14