История изменений
Исправление 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.