![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
proc_maker |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
Всем Алоха!!
![]() Вот есть такой вот энум:
Есть структура к примеру типа
Хочется иметь возможность создания такой вот конструкции:
тоесть на этапе компиляции знать сколько у нас значений определено в энумерейшене чтобы в recs было _не_более_ чем надо кол-ва элементов при условии уникальности значения первого поля. Пока найдено такое решение -
Может можно сделать красивее? Риспект откликнувшимся ![]() Дмитрий |
||||||||
|
|||||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а в чем проблема?
|
|||
|
||||
proc_maker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
Хочется избежать ошибок рода
тоесть чтобы компайлер прошарил максимально возможное колво элементов в массиве. В моем примере это определяется явным указанием размера массива. Было бы удобно - легче найти ошибки, да и мэйнтейнить удобнее мне кажется ![]() Это сообщение отредактировал(а) proc_maker - 17.8.2010, 15:24 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
proc_maker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
Да, за исключением того что энумераторы могут иметь не линейно инкрементальные либо отрицательные значения:
Не сочтите за назоливость, просто хочется какого-нибудь универсального решения. тоесть в идеале хорошо было бы знать на этапе компиляции, что у нас определены 4 значения. Это сообщение отредактировал(а) proc_maker - 17.8.2010, 15:40 |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
В C++ стандартных средств нет, в Qt это достигается за счет мета-объектного компилятора, которому автоматически скармливаются исходники. Таким образом уже в рантайме приложение видит все перечисления и даже их текстовые имена. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
что значит могут? в конкретном случае либо они имеют, либо нет. Надо исходить из этого а не из потенциально возможных вариантов. Если имеют - тогда другой вопрос, в придеведенном примере этого нет.
К сожалению нету такого. enum -ы в C++ имеют небогатый функционал. |
||||
|
|||||
proc_maker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
т.н. абстрагирование - наиболее элементарный пример для пояснения сути вопроса не вдаваясь в детали. В процессе мэйнтейна возможно добавление новых значений в энумератор, в том числе и отрицательных. В таком случае, ограничившись возможностью работать только с положительными значениями интерфейс станет непригодным, чего очень не хотелось бы. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
proc_maker
Я думаю вариант, приведенный мною в первом ответе наиболее подходящий. Все равно, даже если решить этот вопрос это не спасет от других потенциальных ошибок, таких как например неверная очередность инициализации данных и так далее, в этой части кода надо быть внимательным в любом случае. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
proc_maker, в том как Вы описываете задачу, надо не енумы контролировать, а описывать общую структуру, которая может быть представлена как массивом, так и енумом. В помощь всеми любимая #define
![]() |
|||
|
||||
proc_maker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
примерно так :
Это сообщение отредактировал(а) mes - 18.8.2010, 10:52 |
|||
|
||||
proc_maker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: нет Всего: 1 |
Понял, интересная мысль... Хоть я и не совсем люблю макросы выглядит красиво
![]() Спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |