【发布时间】:2018-07-06 21:03:11
【问题描述】:
我正在尝试将一些 Free Pascal 代码转换为使用 Delphi 10.2 进行编译。
Free Pascal 代码的结构如下:
generic TVolume<T> = class(TObject)
// T has to be a numerical/float type
constructor Create(pSizeX, pSizeY, pDepth: integer; c: T = 0);
constructor Create(Original: TBits; pFalse: T = -0.5; pTrue: T = +0.5);
Delphi 不喜欢这样:E2268: Parameters of this type cannot have default values
我认为原因很简单,因为 Delphi 编译器不想假设 T 可能是什么类型,所以它拒绝编译它。这一点我想说的是 FPC。
要解决这个问题,我很可能必须创建一堆 overload 方法:
TVolume<T> = class(TObject)
constructor Create(pSizeX, pSizeY, pDepth: integer); overload;
constructor Create(pSizeX, pSizeY, pDepth: integer; c: T); overload;
constructor Create(Original: TBits); overload;
constructor Create(Original: TBits; pFalse: T); overload;
constructor Create(Original: TBits; pFalse: T; pTrue: T); overload;
但我仍然想知道在 Delphi 中是否有一种方法可以做到这一点,我还不知道?
【问题讨论】:
标签: delphi migration freepascal