gpt4 book ai didi

delphi - 为什么缺少可选参数会导致 "Incompatible types"错误

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

有人可以解释一下为什么当我省略构造函数的可选参数时,在以下程序中出现“不兼容类型”错误(Delphi XE3)(有关详细信息,请参阅代码底部的注释)?

program Test;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils,
System.Classes;

type
BaseClass = class(TObject);

ChildClass = class(BaseClass);

GenericBaseClass<T> = class
public
constructor Create(Fixed: Integer);
end;

GenericClass<T: BaseClass> = class(GenericBaseClass<T>)
public
type
TMyProc = procedure (DataObject: T) of object;
public
constructor Create(Fixed: String; Optional: TMyProc = nil);
end;

constructor GenericClass<T>.Create(Fixed: String; Optional: TMyProc);
begin
inherited Create(12);
end;

constructor GenericBaseClass<T>.Create(Fixed: Integer);
begin
inherited Create();
end;

var
Gc: GenericClass<ChildClass>;

begin
// this call is okay
Gc := GenericClass<ChildClass>.Create('', nil);
// this call fails: E2010 Incompatible types: 'ChildClass' and 'T'
Gc := GenericClass<ChildClass>.Create('');
end.

最佳答案

reintroduceoverload 添加到 GenericClass 构造函数,因为您有多个具有相同名称但参数不同的构造函数。

关于delphi - 为什么缺少可选参数会导致 "Incompatible types"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16794525/

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