Название: Как подружить оператор выбора switch и QString Отправлено: sindbad07 от Август 19, 2010, 08:37 Здравствуйте, делаю так:
QString type; .. switch( type ) { case "type1": .. break; .. } компилятор ругается: "error: switch quantity not an integer" Подскажите как сделать свитч для строк. Спасибо. Название: Re: Как подружить оператор выбора switch и QString Отправлено: BRE от Август 19, 2010, 08:57 switch может работать только с целыми типами.
Название: Re: Как подружить оператор выбора switch и QString Отправлено: Авварон от Август 19, 2010, 08:57 никак, в с++ это ограничение свитча (он сравнивает только инты\то что к ним сводится). Можно попробовать поиграться с неявным приведением типов (а-ля класс-компаратор), но не думаю, что прокатит (цепочка QString->класс->int не сработает, ибо компилятор делает только 1 пользовательское и 1 встроенное преобразование, а тут 2 пользовательских)
Название: Re: Как подружить оператор выбора switch и QString Отправлено: KADABRA от Август 19, 2010, 09:03 В свиче можно использовать только базове типы.
Сравнивать значение базовых строк в свиче тоже нельзя - получите результат сравнения указателей, а не строк. Название: Re: Как подружить оператор выбора switch и QString Отправлено: Sancho_s_rancho от Август 19, 2010, 10:18 Как уже сказали выше - никак. От себя добавлю, что ежели у вас возникает стойкая необходимость пихать строки в switch-подобные инструкции, то скорее всего вы что-то реализовали не лучшим образом. Посмотрите на свой код еще разок или выложите кусок.
Название: Re: Как подружить оператор выбора switch и QString Отправлено: ecspertiza от Август 19, 2010, 12:04 Согласен со всеми выше, если возникает такая потребность может тебе стоит посмотреть в сторону enum ? ;)
Название: Re: Как подружить оператор выбора switch и QString Отправлено: Авварон от Август 19, 2010, 12:08 не правы, из убогости языка не следует то что руки у программера кривые, как раз наоборот...
Название: Re: Как подружить оператор выбора switch и QString Отправлено: sindbad07 от Август 19, 2010, 12:12 Спасибо всем, занялся qt, сишку вспоминаю потихоньку, сделат через if, потом думаю можно через какой-нибудь контейнер замутить (когда объектов станет совсем много)
Название: Re: Как подружить оператор выбора switch и QString Отправлено: zenden от Август 19, 2010, 12:17 Цитировать Подскажите как сделать свитч для строк. Спасибо. Переходите на язык D, там есть и свитч для строк и много других вкусностей. Название: Re: Как подружить оператор выбора switch и QString Отправлено: Igors от Август 19, 2010, 12:23 Спасибо всем, занялся qt, сишку вспоминаю потихоньку, сделат через if, потом думаю можно через какой-нибудь контейнер замутить (когда объектов станет совсем много) Через if конечно можно, но уж очень коряво :) Зачем "тип" (ID) объявлять QString? Сделайте его напр int а строки свалите в QMap или QHash. Надо печатать строки - возьмете Код
Название: Re: Как подружить оператор выбора switch и QString Отправлено: sindbad07 от Август 19, 2010, 12:51 Спасибо всем, занялся qt, сишку вспоминаю потихоньку, сделат через if, потом думаю можно через какой-нибудь контейнер замутить (когда объектов станет совсем много) Через if конечно можно, но уж очень коряво :) Зачем "тип" (ID) объявлять QString? Сделайте его напр int а строки свалите в QMap или QHash. Надо печатать строки - возьмете Код
Мне надо, в звисимости от названия (строки) разные (объекты) классы создавать, предыстория: есть абстрактные классы МЕНЕДЖЕР_ОБЪЕКТОВ, РЕДАКТОР_ОБЪЕКТА, производные от них классы менеджеров и объектов в базовом классе МЕНЕДЖЕР_ОБЪЕКТОВ есть конструктор, который инициализирует выборку объектов (в него передается строка с видом объектов, далее он делает выборку из базы данных из одной общей таблицы (каталога) с фильтром по данному типу объектов ), также в менеджере есть метод, открывающий редактор объекта, ВОТ СДЕСЬ мне и надо, в зависимости от типа объекта создать конкретный класс-редактор, потому как метод - общий для производных классов. Название: Re: Как подружить оператор выбора switch и QString Отправлено: Авварон от Август 19, 2010, 13:44 а если копнуть в сторону QMetaType::construct ?
Название: Re: Как подружить оператор выбора switch и QString Отправлено: Sancho_s_rancho от Август 19, 2010, 22:12 Цитировать Подскажите как сделать свитч для строк. Спасибо. Переходите на язык D, там есть и свитч для строк и много других вкусностей. |