Delphi Prism, как объявить постоянный ограниченный массив перечислений
Я получаю ошибку компиляции
[Ошибка 1 (PE114) Тип "array[0..1] of 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 ответ
Где определяется MyEnum? Я почти уверен, что где бы то ни было, он не помечается как публичный (как следует из сообщения об ошибке), но он остается на видимости по умолчанию (которая является закрытой в.NET).
Тогда RRUZ прав в своем комментарии, вам следует избегать глобальных деклараций. Компилятору Oxygene необходимо создать (невидимый, автоматически сгенерированный) класс, содержащий его как статический член (класс) в любом случае, потому что.NET не допускает глобальных объявлений, поэтому вы должны сделать это "правильно" в первую очередь.