嵌套类函数不能编译

我正在将一些传统的第三方组件从Delphi 6源升级到XE2。

第三方源程序在类过程中嵌套了类功能。 模拟将失败的确切工作副本:

type
  TMyClass1 = class
  public
    class procedure DoSomething;
  end;

{ TMyClass1 }

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

end;

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

谢谢


为了在XE2中编译你的代码,只需删除DoSomethingelse定义的class关键字,即使这个代码是在旧版本的delphi中编译的(我在Delphi 5,7和2007中测试了你的代码),我没有看到(或差异)声明一个嵌入式(内部)过程或函数与class关键字。

链接地址: http://www.djcxy.com/p/59879.html

上一篇: Nested Class functions don't compile

下一篇: Consume .NET assembly in Delphi XE2