Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Задача с switch


Автор: Toohtik 21.5.2007, 23:01
Возникла такая задача: есть список. Идентефикаторы строк списка хранятся в  массиве. При выборе строки списка в прогу приходит сообщение с номером выбраной строки. Как определить какая строка выбрана т.е.:
Код

switch(Сообщение_с_номером_строки)
{
      case: массив[1]
}

Но так нельзя т.к. компилятор говорит что case должна быть константа!
Как быть?
http://www.forum.vingrad.ru/forum/topic-152210/unread-1/anchor-entry1140974/0.html

Автор: Xenon 21.5.2007, 23:05
Toohtik, ну правильно ... там должен быть интегральных тип, при чем констатный.
Попробуй хранить в std::map<идентификатор, строка>

Автор: Anikmar 21.5.2007, 23:07
Если номер строки можно получить из сообщения то проще прямой адресацией в массиве

Result = Massiv[Номер_строки];

А синтаксис switch/case такой:
Код

switch(Number)
{
    case 0:
        Result = "Number Zero";
        break;
    case 1:
        Result = "Number One";
        break;
    default:
        Result = "Fig ego znaet";
}

Автор: Toohtik 21.5.2007, 23:18
Anikmar, что то я не уловил сути. Где тут прямая адресация в массиве? У нас вместо 0 или 1 нужна переменная. Кстати не обязательно использовать свич, может можно как нить по другому?

Автор: Anikmar 21.5.2007, 23:23
Цитата(Toohtik @  21.5.2007,  23:18 Найти цитируемый пост)
Anikmar, что то я не уловил сути. Где тут прямая адресация в массиве? У нас вместо 0 или 1 нужна переменная. Кстати не обязательно использовать свич, может можно как нить по другому? 

Если сообщения организованы так, что можно получить номер строки, то проще создать инициализированный массив строк и доступаться к нужной строке напрямую по индексу.
Если, конечно, это возможно - я не знаю что за сообщения у вас и что за номера строк в них содержаться.
Вот я и написал это:
Result = Massiv[Номер_строки];
А по поводу переменной в switch это естественно, главное, чтобы она имела более менее определенный набор значений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)