Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пустое перечисление enum { }; / 10 сообщений из 10, страница 1 из 1
14.12.2015, 15:20
    #39127420
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
Видимо, вам придётся включать бабку с шаром....

Разбираю тут старую чужую программу. Поясните, как такое может быть?

Есть полно мест, где вызывается некий "SettingType", причем как-то так: "SettingType(2000)", "SettingType(4500)"
Решил узнать, что за SettingType:
Код: plaintext
1.
enum SettingType { };


тогда я понять не могу, что можно передавать ему в скобках и зачем.

Прочесал поиском по всему проекту на наличие "SettingType(", может, конструктор есть какой.. хз. Что это может быть?
...
Рейтинг: 0 / 0
14.12.2015, 15:30
    #39127433
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
Всё очень просто.

Код: plaintext
1.
enum SettingType { };



определяет SettingType как синоним для типа данных int.
Но чтобы создать экземпляр этого типа, нужно явно указывать псеврдоконструктор.
SettingType(42). При этом компилятор не проверяет вхождение экземпляра в множество
возможных значений для SettingType.

Итого, товарищ, который это делал, очень хотел писать в программе тип для переменных именно
в виде SettingType, а не int, но не хотел определять все возможные константы для данного типа.
...
Рейтинг: 0 / 0
14.12.2015, 15:32
    #39127439
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
Charles Weyland,

type(xxx) - это тоже самое, что и static_cast<type>(xxx)
...
Рейтинг: 0 / 0
15.12.2015, 12:14
    #39128310
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
поскольку enum неявно преобразовывается в int, то это просто typedef такой хитрый
...
Рейтинг: 0 / 0
15.12.2015, 13:34
    #39128474
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
Что-то я не вкурю...
Можно простенький пример с этим enum-ом, складывающий два числа?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
enum Value{ };

main()
{
   //Value(7);   - что вот с этим
   //Value(13);           делать?
}
...
Рейтинг: 0 / 0
15.12.2015, 13:50
    #39128507
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
alexy_blackпоскольку enum неявно преобразовывается в int, то это просто typedef такой хитрый

Не "неявно преобразовывается", а является синонимом.
...
Рейтинг: 0 / 0
15.12.2015, 14:24
    #39128575
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
ок. Т.е. Value(7) - фактически, есть 7. А... пришло же ведь кому-то в голову это. Зачем так делают?)
...
Рейтинг: 0 / 0
15.12.2015, 14:27
    #39128581
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
Charles WeylandА... пришло же ведь кому-то в голову это. Зачем так делают?)
18558029
MasterZivИтого, товарищ, который это делал, очень хотел писать в программе тип для переменных именно
в виде SettingType, а не int, но не хотел определять все возможные константы для данного типа.
...
Рейтинг: 0 / 0
15.12.2015, 14:53
    #39128627
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
да это несколько раз прочитал..
...
Рейтинг: 0 / 0
18.12.2015, 11:02
    #39131609
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустое перечисление enum { };
как пишет Стив Макконнелл хитрый код - это плохой код.
лучше юзать typedef . наверное, если в этом коде заменить этот enum на typedef, то он будет работать также.

а почему enum - синоним? я думал что enum letters {A}; letters l = A; - здесь A - синоним определенного числа, а l - переменная перечисления.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пустое перечисление enum { }; / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]