0

我收到编译错误

[错误 1 ​​(PE114) 类型“ConsoleApplication.MyEnum 的数组 [0..1]”从类型“ConsoleApplication”中使用。必须是公共的 D:\PrismProjects\ConsoleApplication\ConsoleApplication\Program.pas 14 42 ConsoleApplication]

当我尝试编译以下代码时:

namespace ConsoleApplication;

interface

type
  ConsoleApp = class
    public
      class method Main(args: array of string);
  end;

  MyEnum = (F, T);

const
  EnumOfBool: array[boolean] of MyEnum = [MyEnum.F, MyEnum.T];

implementation

  class method ConsoleApp.Main(args: array of string);
  begin
    Console.WriteLine('Hello World.');
  end;
end.
4

1 回答 1

0

MyEnum 在哪里定义?我很确定无论在哪里,它都没有标记为公共(如错误消息所示),但它保留在默认可见性(在 .NET 中是私有的)。

那么 RRUZ 在他的评论中是正确的,你应该避免全局声明。Oxygene 编译器需要创建一个(不可见的、自动生成的)类,其中包含它作为静态(类)成员,因为 .NET 不允许全局声明,所以你应该首先“正确”地做。

于 2011-11-04T15:41:28.357 回答