delphi – 未使用提示在泛型类中重载方法
我的项目中有一个泛型类,它有两个具有不同可见性的重载方法,如下所示:
>一个具有私人可见性和一些参数.它使用参数和一些私有结构(其中一些在构造函数中注入)来执行某些操作. 这工作正常但编译器发出提示消息如下:
出于好奇,我试图重新创建课程,而不是一般课程.在这种情况下,编译器提示不会出现. 以下您可以找到一个演示案例的简单示例: program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; type //class with generic type TFoo<T> = class private procedure Bar(param : string); overload; protected procedure Bar; overload; end; //class without generic type TFoo2 = class private procedure Bar(param : string); overload; protected procedure Bar; overload; end; //TFoo<T> methods procedure TFoo<T>.Bar(param: string); begin writeln('Foo<T>. this is a private procedure. ' + param); end; procedure TFoo<T>.Bar; begin writeln('Foo<T>. This is a protected procedure.'); Bar('Foo<T>. calling from a protected one.'); end; //TFoo2 methods procedure TFoo2.Bar(param: string); begin writeln('Foo2. this is a private procedure. ' + param); end; procedure TFoo2.Bar; begin writeln('Foo2. This is a protected procedure.'); Bar('Foo2. calling from a protected one.'); end; var foo : TFoo<string>; foo2 : TFoo2; begin try foo := TFoo<string>.Create; foo2 := TFoo2.Create; try foo.Bar; foo2.Bar; readln; finally foo.Free; foo2.Free; end; except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; end. 在此示例中,不使用泛型类型,但没有必要证明这一点.我真正的类确实使用它,并且还会出现编译器提示. 任何关于为什么这个编译器提示出现在泛型类中的想法?我在Delphi XE5上测试了这个. 更新:因为它似乎是一个编译器错误,我们已经提交了QC report. 解决方法
这是一个编译器错误.您应该提交质量控制报告.
有趣的是,您的代码甚至不能在较旧的Delphi版本上编译.例如,我无法在XE3上编译您的代码.第一次调用Bar失败了:
如果我记得这个问题与在.dpr文件中声明和实例化泛型类型有关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |