2011-11-03 34 views
0

的恒定界阵列I得到一个编译错误德尔福棱镜,如何声明枚举

[错误1(PE114)键入“阵列[0..1] ConsoleApplication.MyEnum的”从类型“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. 
+1

您发布的代码不会生成此错误,请尝试发布实际代码。同样,你对EnumOfBool数组的声明是正确的,但是尽量避免使用全局成员,即使Delphi Prism允许这样做。 – RRUZ

回答

0

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

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