LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Там нельзя в enum присвоить число.

Можно, если конверсию типов вставить, а она нужна для множеств (битовых маск) на основе Enum.

В Ada неправильная конверсия проверяется, в С++ нет.

Можно как-то так:

И как получить имя по Type::c? Делать линейный поиск по массиву All сначала? Неудобненько.

Вторая проблема, если это будет в .h файле, то будет ругаться на множественную декларацию, а если спрячешь в .cpp то нельзя будет взять размер массива через sizeof.

Третья проблема, если Enum длинный, то добавление значения в середину может быть ошибочным, и будет неприятная ошибка когда значения в таблицах будут сбиты. Ну и в целом строк больше в 3 раза.

Четвертая проблема, это никак не помогает в создании массива с индексами из Enum, тех же битовы маск из boolean.

В Ada всё, что можно, сделали в компиляторе.

Сделали необходимый минимум, и то не все учли.

Исправление MOPKOBKA, :

Там нельзя в enum присвоить число.

Можно, если конверсию типов вставить, а она нужна для множеств (битовых маск) на основе Enum.

В Ada неправильная конверсия проверяется, в С++ нет.

Можно как-то так:

И как получить имя по Type::c? Делать линейный поиск по массиву All сначала? Неудобненько.

Вторая проблема, если это будет в .h файле, то будет ругаться на множественную декларацию, а если спрячешь в .cpp то нельзя будет взять размер массива через sizeof.

Третья проблема, если Enum длинный, то добавление значения в середину может быть ошибочным, и будет неприятная ошибка когда значения в таблицах будут сбиты. Ну и в целом строк больше в 3 раза.

Четвертая проблема, это никак не помогает в создании массива с индексами из Enum, тех же битовы маск из boolean.

В Ada всё, что можно, сделали в компиляторе.

Сделали необходимый минимум.

Исправление MOPKOBKA, :

Там нельзя в enum присвоить число.

Можно, если конверсию типов вставить, а она нужна для множеств (битовых маск) на основе Enum.

В Ada неправильная конверсия проверяется, в С++ нет.

Можно как-то так:

И как получить имя по Type::c? Делать линейный поиск по массиву All сначала? Неудобненько.

Вторая проблема, если это будет в .h файле, то будет ругаться на множественную декларацию, а если спрячешь в .cpp то нельзя будет взять размер массива через sizeof.

Третья проблема, если Enum длинный, то добавление значения в середину может быть ошибочным, и будет неприятная ошибка когда значения в таблицах будут сбиты. Ну и в целом строк больше в 3 раза.

Четвертая проблема, это никак не помогает в создании массива с индексами из Enum, тех же битовы маск из boolean.

Исправление MOPKOBKA, :

Там нельзя в enum присвоить число.

Можно, если конверсию типов вставить, а она нужна для множеств (битовых маск) на основе Enum.

Можно как-то так:

И как получить имя по Type::c? Делать линейный поиск по массиву All сначала? Неудобненько.

Вторая проблема, если это будет в .h файле, то будет ругаться на множественную декларацию, а если спрячешь в .cpp то нельзя будет взять размер массива через sizeof.

Третья проблема, если Enum длинный, то добавление значения в середину может быть ошибочным, и будет неприятная ошибка когда значения в таблицах будут сбиты. Ну и в целом строк больше в 3 раза.

Четвертая проблема, это никак не помогает в создании массива с индексами из Enum, тех же битовы маск из boolean.

Исходная версия MOPKOBKA, :

Там нельзя в enum присвоить число.

Можно, если конверсию типов вставить, а она нужна для множеств (битовых маск) на основе Enum.

Можно как-то так:

И как получить имя по Type::c? Делать линейный поиск по массиву All сначала? Неудобненько.

Вторая проблема, если это будет в .h файле, то будет ругаться на множественную декларацию, а если спрячешь в .cpp то нельзя будет взять размер массива через sizeof.

Третья проблема, если Enum длинный, то добавление значения в середину может быть ошибочным, и будет неприятная ошибка когда значения в таблицах будут сбиты.

Четвертая проблема, это никак не помогает в создании массива с индексами из Enum, тех же битовы маск из boolean.