【问题标题】:Delphi XE2 - Nested Class functions don't compileDelphi XE2 - 嵌套类函数无法编译
【发布时间】:2011-11-18 05:25:29
【问题描述】:

我正在将一些遗留的第 3 方组件从 Delphi 6 源升级到 XE2。

第 3 方源在类过程中嵌套了类函数。模拟将失败的确切工作副本:

type
  TMyClass1 = class
  public
    class procedure DoSomething;
  end;

{ TMyClass1 }

class procedure TMyClass1.DoSomething;
  class function DoSomethingelse: boolean;
  begin
    result := false;
  end;
begin

end;

试图编译它会给出一个关于 doSomethingelse 是未声明标识符的错误。现在我可以(大概)通过将嵌套函数拉到同一级别来解决这个问题,但是我可以设置一个编译器选项来防止这种情况吗?这是最近发生变化的事情吗?有没有其他人遇到过这个问题?

谢谢

【问题讨论】:

  • 也许嵌套函数旁边不应有“类”字样。如果你想把它拉起来 - 用“class”关键字拉它并添加到私有部分。
  • 当我迁移到 XE2 时,我的代码库中的一些第 3 方代码遇到了这个问题。最好的解决方案是删除内部的类。我敢打赌这种变化是在 XE2 上,上面的代码适用于所有早期版本。
  • @DavidHeffernan 此代码在 Delphi XE 中也失败,因此在 Delphi 2007 和 XE 之间的某些版本中进行了更改。
  • @RRUZ 我从 2010 年迁移到 XE2 时遇到了这个问题,所以我猜当时是 XE。我假设 XE2 是发生更大动荡的地方。

标签: delphi delphi-xe2


【解决方案1】:

为了在 XE2 中编译您的代码,只需删除 DoSomethingelse 定义的 class 关键字,即使此代码在旧版本的 delphi 中编译(我在 Delphi 5、7 和 2007 中测试了您的代码)我不'看不到使用 class 关键字声明嵌入式(内部)过程或函数的要点(或区别)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2019-10-16
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多