4

我正在使用 Delphi Pro 6。现在,知道一个类是否缺少基类抽象方法的唯一方法是等待 IDE 发出一个包含抽象方法 {base class. abstract method name}" 警告或在尝试调用缺少的方法时等待运行时抽象错误方法。前者是不够的,因为它只为那些在当前项目中实际构建的派生类找到警告。后者简直是痛苦的。

如果 Delphi 为所有未立即声明/实现基类抽象方法的类输出致命警告会好得多。有谁知道一种设置方法或这样做的插件?

谢谢。

4

3 回答 3

2

仅当您实例化该类时,包含抽象方法的类才是危险的,因此 Delphi 的警告是正确的。如果您忽略了至少一个“使用抽象方法实例化类”,您只会得到抽象错误运行时异常。

于 2010-06-25T20:08:54.593 回答
2

我发现最简单的方法是使用条件定义在单元初始化区域中添加一个部分,该条件定义创建您认为不应该有任何抽象方法的每个类的实例:

{$IFDEF CheckAbstracts}
initialization
  TSubclass1.Create(params);
  TAbstractClass1.Create(params); // Gives constructing instance of {derived class} containing abstract method warning
{$ENDIF}

使用 CheckAbstracts 条件编译,每当您有一个未完全实现的类时,您都会收到警告。

于 2010-06-26T00:01:53.527 回答
1

不实现这些方法是有效的。您可能打算在另一个子类型中实现抽象方法。

Delphi/Win32 的较新版本(我不记得是哪个)引入了正式的abstract类,这清楚地表明了您何时实例化和不打算实例化该类型。如果您对使用它很严格,那么您请求的功能将是有意义的。但对于 D6,尚不清楚。

于 2010-06-25T18:45:56.453 回答