Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Параметр функции, содержащий одно из нескольких значений

#cpp #c


Каким образом можно описать параметр функции?

Допустим есть функция: void stick(int a, inb &b, /* ? */ direct)

Собственно вместе с этим direct я передаю один из двух параметров - right и left.
И в теле функции должна происходить проверка, на указанный параметр. 
    


Ответы

Ответ 1



Попробуйте так: enum Direction { Left, Right }; void stick(int a, inb &b, Direction d); { switch (d) { case Left: break; case Right: break; } // ... } Заметьте, что enum в версиях C++ до C++11 даёт достаточно слабую типизацию. Например, такой код компилируется: enum Direction { Left, Right }; enum Direction2 { North = 5, South = 7 }; void f(Direction d) { switch (d) { case North: break; case South: break; } // ... } Для компилятора все enum'ы — просто числовые константы. Но начиная с C++11, лучше использовать строго типизированный enum: enum class Direction { //^^^^^ Left, Right }; enum WrongDirection { Left = 1, Right = 0 }; void f(Direction d) { switch (d) { case Direction::Left: // а не WrongDirection::Left break; case Direction::Right: break; } // ... } Здесь компилятор не даст вам случайно использовать неправильный тип.

Комментариев нет:

Отправить комментарий