Я столкнулся с каким-то странным поведением в Delphi XE4.
Я не могу объявить тип set
в универсальном классе, где порядковый тип объявлен в том же классе.
Например:
TTest<T> = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
Вышеупомянутое не компилируется. Компилятор выдает ошибку "E2001: требуется порядковый номер".
Необщий класс, например
TTest = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
компилируется.
Чтобы общий класс успешно скомпилировался, порядковый номер должен быть объявлен вне класса:
TEnumType = (eOne, eTwo, eThree);
TTest<T> = class(TObject)
type
TEnumTypes = set of TEnumType;
end;
- Такое поведение считается ошибкой? Если да, было ли это исправлено в более поздней версии?
- У кого-нибудь есть другой обходной путь? Я хотел объявить типы внутри класса, потому что они используются исключительно в приватных частях этого класса.