Delphi 2010编译器有关抽象类实例化的警告应该是编译器错误

9

是否有编译器选项可以让编译器在我实例化抽象类时给出错误而不是警告?

Foo = class
    procedure Bar; virtual; abstract;
end;

var
    f : Foo;
begin
    f := Foo.Create;  // <-- should give me a compile time error
end;

1
我不会... :) 所以很高兴我们可以自定义这种行为。@Deltics的答案向我们展示了如何做到这一点。 - Marjan Venema
我对此感到无动于衷。如果您需要在编译时检测到这个问题,那么您更大的问题是测试代码不完整。这实际上是您需要担心的事情! - David Heffernan
警告级别正常。可以自定义,但是这种自由会导致分裂和异端。 - Free Consulting
2
@David:在我看来,如果可能的话,在编译时发现问题总是更好的选择,所以这是一个合理的问题。 - jpfollenius
有关命令行编译,请参阅https://dev59.com/L2Up5IYBdhLWcg3wRWFD。 - mjn
显示剩余10条评论
1个回答

18

在Delphi 2010中(至少是在该版本中,可能还有早期版本但无法测试/验证):

Project -> Options

  + Delphi Compiler

     > Hints and Warnings

         + Output Warnings:

              Constructing instance containing abstract method:  ___________

将此设置从"True"更改为"Error"


1
是的 - 我讨厌指导别人使用项目选项对话框...自从他们“改进”它以来,它就成了一个可憎的东西。 - Deltics
“真的,‘改良版’ 比 ‘旧版’ 更难使用,它有复选框和单选按钮组(尽管我无法想象如何将构建配置默认值纳入老式对话框中,但是现在找到切换选项需要更多时间)。” - Free Consulting
1
另一方面,@Worm 通常只需执行一次此操作,然后就可以完全忘记它;还有其他更重要的工作领域;感谢上天,您不必使用 MSVC 配置对话框! - David Heffernan
2
@David Heffernan,“once”怎么样?它是每个项目的编译时配置。真挚地,显而易见的船长。 - Free Consulting
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接