![]() |
|
Модераторы: bsa |
![]()
|
|
| avnemchenko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 10.7.2009 Репутация: нет Всего: нет |
Добрый день!
Не могу откомпилировать простейшую программку:
VC++2008 ругается страшно и пророчит мне первые места в аду Насколько я понял - я неправильно передаю строку как параметр шаблона. Потратил уйму времени и так и не понял Если это существенно - вот что он мне выдает:
P. S. А задача была грандиозная - хочется мне попробовать создать парсер текстовых файлов, которому задается задание в виде строкового параметра шаблона. Строка (строки) - нечто вроде БНФ. Да-да, я знаю, есть куча программ, которые создают такие парсеры, но тут дело принципа |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Ситаксически все правильно, но так нельзя. Указатели и строковые литералы не могут быть аргументами шаблона. Это сообщение отредактировал(а) azesmcar - 28.7.2009, 15:28 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Лучше не придумывать свое, а использовать готовое - boost::spirit...
А Александреску ты, видимо, рано прочитал. Думаю, сначала надо почитать про шаблоны. |
|||
|
||||
| avnemchenko |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 10.7.2009 Репутация: нет Всего: нет |
Допустим. Но как-то можно передавать строку как параметр шаблона??? Посимвольно - можно, я пробовал. Может, есть какая-то хитрость, которая строку разобъет на список символов?
Насколько я понял, там передается строка функции - значит, построение алгоритма парсинга создается не при компиляции, а уже потом, при выполнении. Я же думаю о том, можно ли такое сделать на этапе компиляции (чем шаблоны и хороши).
Понемногу я шаблоны использую (сделал свою реализацию умных указателей, массивов и т. п.). В Александреску же - совсем другое, метапрограммирование. Я так понял, это одна из самых лучших книг на эту тему. Вот и решил разобраться Нашел в И-нете книженцию "Шаблоны С++: справочник разработчика" Вандевурта и Джосаттиса - думаю, тоже неплохая вещь. Это сообщение отредактировал(а) avnemchenko - 28.7.2009, 15:40 |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Не думаю что это как-то можно реализовать. А что это предположительно даст?
тут опечатка, немного непонятно написано. Речь шла только об этом "string" а не об указателях вообще. Это сообщение отредактировал(а) azesmcar - 28.7.2009, 16:01 |
|||
|
||||
| avnemchenko |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 10.7.2009 Репутация: нет Всего: нет |
Где-то я видел упоминание о реализации такой вещи - какие-то списки символов... А даст это возможность потом делать что-то вроде:
То бишь, можно потом разбирать посимвольно строку на этапе компиляции. |
||||
|
|||||
| bsa |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Ты понял неверно. Читай документацию по boost::spirit. Там строки, в качестве шаблонов, не передаются. Там шаблоны составляются из парсеров:
Или ты хочешь парсить строку на этапе компиляции? |
||||||||
|
|||||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
можно разбить строку по 4 байта и передавать в int
'qwer','tyui',... но зачем %) |
|||
|
||||
| avnemchenko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 10.7.2009 Репутация: нет Всего: нет |
Да, мне интересно именно это. Это сообщение отредактировал(а) avnemchenko - 29.7.2009, 11:15 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
работать с целой строкой без ухищрений не получится, так как на этапе компиляции Вы не можете провести с ней никаких нужных для этой задачи действий.
вот с набором чаров получится работать. Только они не должны быть представлены строковым литералом. определяете для каждого символа тип, и можно сделать макрос для удобного составления такого списка, т.е. в итоге у Вас строка будет типа такого :
с чем можно уже будет спокойно работать.. P.S. предложения составлены так, чтоб тс. легче было понять. |
||||
|
|||||
| avnemchenko |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 10.7.2009 Репутация: нет Всего: нет |
Немного не догоняю... Насколько я понял, речь идет о чем-то вроде такого?
И тогда что такое LISTOFCHARS_7? Макрос, который раскидывает 7 символов куда-то? Не могли бы Вы привести пример его реализации? Это сообщение отредактировал(а) avnemchenko - 29.7.2009, 12:13 |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
нет. mystring это список типов и к нему можно применять операции описанные у Александреску.
вот на скорую руку :
Это сообщение отредактировал(а) mes - 29.7.2009, 13:03 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |