Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Oleg_SK

Ветеран


Сообщения: 1328
Благодарности: 144

Профиль | Отправить PM | Цитировать


pva
Цитата pva:
Когда используются сишные, а не плюсплюсные преобразования типов, используются сишные правила. А они это позволяют. »
Понятно... Подскажите, плиз, как сделать сиплюсплюсное приведение типа, чтобы указанная выше ситуация пресекалась? В том месте книги, где я читаю указано только два варианта для этого действия:
1) Я им пользовался в своем примере в первом посте;
2) С помощью static_cast. Например:
Код: Выделить весь код
vartest = static_cast <COLOR> (1000);
В обоих случаях имеет место обсуждаемая непонятка.
Цитата pva:
Чтобы такого не было, нужно в настройках компилятора поставить галочку, запрещающую преобразование int в enum »
Мне хотелось бы сохранить возможность преобразования int в enum.

P.S: Неужели придется писать свой код, контролирующий корректность значения int перед его преобразованием в enum? Хотелось бы этого избежать...
P.S.S: По ходу изучения работы с перечислениями я столкнулся с еще одной непоняткой. Проблема в том, что компилятор не дает мне при создании нескольких разных типов-перечислений использовать в качестве одного из их возможных значений одноименную константу. Сразу скажу, что технически я понимаю почему это происходит. Мне не понятно: почему так сделали? Зачем сделали возможные значения перечислений доступными коду как обычные константы?

-------
Здесь вместо "Спасибо" принято щелкать на "Полезное сообщение" у тех постов, которые вам помогли, или показались полезными.


Отправлено: 13:21, 03-12-2008 | #3