gpt4 book ai didi

delphi - Delphi 泛型类可以从其类参数派生吗?

转载 作者:行者123 更新时间:2023-12-03 15:20:34 24 4
gpt4 key购买 nike

我一直在尝试定义一个通用的、可继承的 TSingleton 类。这是我正在进行的工作:

  TSingleton<RealClass, InheritsFrom : class> = class(InheritsFrom)
strict private
class var FInstance : RealClass;
protected
procedure InstanceInitialization;virtual;
public
destructor Destroy; override;
class procedure Create; reintroduce;
class function Instance : RealClass;
class procedure InstanceFree;
end;

目标是能够将单例模式“插入”继承树中。所以不要声明这样的东西:

  TMySingletonComponent = class(TComponent)

end;

并且需要在那里实现单例模式,我会声明如下:

  TMyGenericSingletonComponent = class(TSingleton<TMyGenericSingletonComponent,TComponent>)
end;

遗憾的是,这行不通。我收到以下错误(在 D2010 中):

  TSingleton<RealClass, InheritsFrom : class> = class(InheritsFrom) ///E2021 Class type required

现在我想知道,这在 Delphi XE 中可行吗?我可以使用一些“干净的技巧”来在 D2010 中完成这项工作吗?有一些根本原因导致这行不通吗?

最佳答案

根据设计,您无法创建从其类型参数之一派生的泛型类。

关于delphi - Delphi 泛型类可以从其类参数派生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com