Каким образом можно описать параметр функции?
Допустим есть функция: void stick(int a, inb &b, /* ? */ direct)
Собственно вместе с этим direct я передаю один из двух параметров - right и left. И в теле функции должна происходить проверка, на указанный параметр.
Ответ
Попробуйте так:
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;
}
// ...
}
Здесь компилятор не даст вам случайно использовать неправильный тип.
Комментариев нет:
Отправить комментарий