Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Иванов_Андрей
10 / 10 / 0
Регистрация: 23.07.2014
Сообщений: 52
#1

Можно ли узнать, что в функцию передается именно элемент перечисления? - C++

01.08.2014, 20:06. Просмотров 357. Ответов 5
Метки нет (Все метки)

Добрый вечер всем. Возможно глупый вопрос, тем не менее: как грамотно организовать проверку входного параметра, если допустимые варианты указаны в перечислении перечислении?
например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
enum COLORS { 
    BLACK   = 1,
    WHITE   = 0
 };
 
class test
{
public:
    test(){
 
    }
    ~test(){
 
    }
    void setColor(int color){
        /**
        вот здесь надо как то определить правильность параметра
        не писать же в самом деле:
        */
        switch(color){
            case BLACK:{
                Color = color;
                break;
            }
            case WHITE:{
                Color = color;
                break;   
            }
            default:
            break;
 
        }
    }
 
private:
    int Color;
};
А если перечисление из десятка элементов состоит?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2014, 20:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Можно ли узнать, что в функцию передается именно элемент перечисления? (C++):

Что можно узнать по hWnd о контроле?
Допустим я получил список всех кнопок в окне (на примере калькулятора), но как...

Разработать функцию, в которую передается массив типа float, что возвращает сумму элементов массива в диапазон
Разработать функцию, в которую передается массив типа float, что возвращает...

Можно ли узнать кто вызвал мою функцию ?
Необходимо узнать имя функции, которая вызвала мою функцию. В студии же есть...

Что можно узнать о программисте по программе?
День всем добрый! Недавно я залил свою прогу на сайт Virustotal. Теперь я в...

Случайный элемент перечисления
Можно ли найти случайный элемент перечисления(enum) и как это сделать?

В функцию не передается массив
собственно проверяю длину строки перед вызовом функции second - получаю 300. ...

5
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 851
Записей в блоге: 1
01.08.2014, 20:17 #2
Иванов_Андрей, если они там по порядку, то можно привести к int и сравнить диапазоны. Можно использовать enum class из Си++11, тогда компилятор не даст использовать голый int и что-то кроме членов перечисления.
1
Иванов_Андрей
10 / 10 / 0
Регистрация: 23.07.2014
Сообщений: 52
01.08.2014, 20:19  [ТС] #3
CyberSolver, это абстрактный пример, там немного сложнее все, меня интересует сама структура подобной конструкции.
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 851
Записей в блоге: 1
01.08.2014, 20:23 #4
Лучший ответ Сообщение было отмечено Иванов_Андрей как решение

Решение

Иванов_Андрей, я вас не понял. Вам надо отследить, чтобы никто не передал методу setColor что-то кроме членов перечисления. Если они подряд - можно использовать проверку диапазона. Если нет - только switch-case по всем. Если использовать enum classes, то код слегка перепишется.
1
Иванов_Андрей
10 / 10 / 0
Регистрация: 23.07.2014
Сообщений: 52
01.08.2014, 20:29  [ТС] #5
Цитата Сообщение от CyberSolver Посмотреть сообщение
Вам надо отследить, чтобы никто не передал методу setColor что-то кроме членов перечисления.
угу, именно это мне и нужно, а с проверкой диапазона - хорошая идея, перечисление то я сам создаю, спасибо.
0
krv
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 328
04.08.2014, 11:00 #6
Цитата Сообщение от Иванов_Андрей Посмотреть сообщение
с проверкой диапазона - хорошая идея, перечисление то я сам создаю, спасибо.
Только реализуй что-то типа функций low и high для перечисления, чтобы при его модификации не перебирать весь код.
2
04.08.2014, 11:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2014, 11:00
Привет! Вот еще темы с решениями:

Массив не передается в функцию
Помогите, я понимаю, что ошибка очень тупая, но исправить не могу. Массив t не...

Не передается массив в функцию
Всем привет,не могу передать массив в функцию,после передачи массив получается...

Неправильно передается массив в функцию
Здравствуйте! Я решаю лабораторную работу и у меня возникли проблемы. Если не...

Можно ли как-то узнать, что программа была перенесена с одного компьютера на другой
нужно это для того, чтобы программа работала только на доверенных компьютерах....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru