Можете ли вы сослаться на именованное перечисление, как если бы оно было анонимным в D?
Я делаю D-мост к библиотеке C, и он придумал код C, использующий перечисления typedef, которые он называет константой, но может назвать его для аргументов функции и тому подобного. Пример:
enum someLongNameThatTheCLibraryUses
{
A,
B,
}
В настоящее время я должен ссылаться на это так:
someLongNameThatTheCLibraryUses.A;
Но я бы предпочел:
A;
Я мог бы сделать это:
alias someLongNameThatTheCLibraryUses a;
a.A;
Но я не хочу делать это в модуле библиотеки, поэтому мне придется делать это там, где он используется, что будет раздражать.
Есть ли способ сделать это?
1 ответ
Решение
Если вам нужна безопасность типов с анонимными перечислениями, вы можете создать новый отдельный тип, используя typedef
и используйте его как базовый тип анонимного перечисления. Пример:
typedef int A;
enum : A
{
a1,
a2,
a3
}
typedef int X;
enum : X
{
x1,
x2,
x3
}
void main()
{
A a;
X x;
x = a; // Error: cannot implicitly convert expression (a) of type A to X
}