Почему операторы переключения C++ ограничены константными выражениями?C++

Программы на C++. Форум разработчиков
Anonymous
Почему операторы переключения C++ ограничены константными выражениями?

Сообщение Anonymous »

Я хотел использовать макрофункции в операторах переключения, прежде чем понял, что операторы должны быть постоянными. Пример (не компилируется):

Код: Выделить всё

#define BAND_FIELD1(B)   (10 * B + 1)
...
#define BAND_FIELD7(B)   (10 * B + 7)

int B = myField % 10;
switch (myField) {
case BAND_FIELD1(B):
variable1[B] = 123;
break;
case BAND_FIELD7(B):
variable7[B] = 321;
break;
...
}
Мне скорее пришлось использовать if.. else:

Код: Выделить всё

if (myField == BAND_FIELD1(B)
variable1[B] = 123;
else if (myField == BAND_FIELD7(B)
variable7[B] = 321;
Почему операторы переключения C++ ограничены константными выражениями?

Подробнее здесь: https://stackoverflow.com/questions/213 ... xpressions

Вернуться в «C++»