Delphi Prism, как объявить постоянный ограниченный массив перечислений - PullRequest
0 голосов
/ 04 ноября 2011

Я получаю ошибку компиляции

[Ошибка 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 Ответ

0 голосов
/ 04 ноября 2011

Где определяется MyEnum? Я почти уверен, что где бы то ни было, он не помечен как публичный (как следует из сообщения об ошибке), но он остается на видимости по умолчанию (которая является закрытой в .NET).

Тогда RRUZ прав в своем комментарии, вам следует избегать глобальных деклараций. Компилятору Oxygene необходимо создать (невидимый, автоматически сгенерированный) класс, содержащий его как статический член (класс) в любом случае, потому что .NET не допускает глобальных объявлений, поэтому вы должны сделать это «правильно» в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...