gpt4 book ai didi

delphi - 获取泛型类中重载方法的未使用提示

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

我的项目中有一个泛型类,它有两个具有不同可见性的重载方法,如下所示:

  • 具有私有(private)可见性和一些参数。它使用参数和一些私有(private)结构(其中一些被注入(inject)到构造函数中)来执行一些操作。
  • 第二个具有 protected 可见性,无参数。派生类使用它来执行父类(super class)实现的操作。为此,它调用私有(private)方法

这工作正常,但编译器会发出如下提示消息:

[dcc32 Hint] Project1.dpr(15): H2219 Private symbol 'Bar' declared but never used

出于好奇,我尝试重新创建该类,但它不是通用类。在这种情况下,编译器提示不会出现。

下面您可以找到一个演示该案例的简单示例:

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 失败并显示:

[dcc32 Error]: E2250 There is no overloaded version of 'Bar' that can be called with these arguments

如果我记得该问题与在 .dpr 文件中声明和实例化泛型类型有关。

关于delphi - 获取泛型类中重载方法的未使用提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22808213/

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