delphi – 为什么编译器会为我的泛型函数参数抱怨“不兼容的类型
发布时间:2020-12-15 09:42:07 所属栏目:大数据 来源:网络整理
导读:我在使用泛型方面遇到了问题.我不知道如何将OnCallbackWrapper传递给CallbackWrapper程序.我在以下示例中遇到“不兼容类型”错误: unit uTest;interfaceuses Generics.Defaults;type TGenericCallbackT = procedure(Fields: T);type TSpecificFields = reco
我在使用泛型方面遇到了问题.我不知道如何将OnCallbackWrapper传递给CallbackWrapper程序.我在以下示例中遇到“不兼容类型”错误:
unit uTest; interface uses Generics.Defaults; type TGenericCallback<T> = procedure(Fields: T); type TSpecificFields = record A: Integer; B: Integer; C: Integer; end; const SpecificFields: TSpecificFields = (A: 5; B: 4; C: 3); procedure CallbackWrapper(GenericCallback: TGenericCallback<TSpecificFields>); implementation procedure CallbackWrapper(GenericCallback: TGenericCallback<TSpecificFields>); begin GenericCallback(SpecificFields); end; procedure OnCallbackWrapper(const Fields: TSpecificFields); begin Assert(Fields.A = 5); Assert(Fields.B = 4); Assert(Fields.C = 3); end; procedure Dummy; begin CallbackWrapper(OnCallbackWrapper); //Incompatible types here end; end. 我究竟做错了什么?谢谢. 解决方法procedure OnCallbackWrapper( Fields: TSpecificFields); begin Assert(Fields.A = 5); Assert(Fields.B = 4); Assert(Fields.C = 3); end; 或将声明改为 TGenericCallback<T> = procedure(const Fields: T); 按值传递参数的过程不与通过引用传递参数的过程分配兼容. Reference (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |