![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Zerstroer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Доброго времени суток!
Осваиваю boost program_options. Решил выбросить свой старый велосипед и написать новый обработчик параметров командной строки с использованием boost. Нагуглил себе в помощь несколько понятных мануалов "для самых маленьких" (официальные доки по program_options осваиваются с большим трудом). Мне самым понятным показался вот этот. В общем, такая проблема: Есть перечень взаимоисключающих параметров, т.е. в командной строке должен использоваться только один из них, в противном случае - должен ругаться. Пытаюсь реализовать через штуку под названием notifier. А именно: Для каждого из взаимоисключающих аргументов в notifier устанавливаю вызов функции checkConflict. Она работает с полем класса - bool-флагом, который контролирует, что бы не более одного параметра оказалось определено. В общем, я не знаю, как правильно передать её в notifier. Может ли она быть не статической? Как её правильно определить и использовать? Можно ли это решить с помощью boost::bind? Если она статическая - при компиляции возникает ошибка использования поля класса parameterAlreadySet в статической функции. Есть ли вообще более оптимальный способ решения моей задачи? Вот мои примеры (для сокращения кода выкинул обработку исключительных ситуаций): ArgumentsAnalyzer.h
ArgumentsAnalyzer.cpp
main.cpp
-------------------- In silico |
||||||
|
|||||||
| Zerstroer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Наверное пост оказался слишком емким и неясным...
Проблему получилось решить самостоятельно. Решение пришло с использованием boost::bind Использовал вызов метода класса так (не верно):
С использованием bind (верно):
Надеюсь, кому-нибудь на что-нибудь сгодится... -------------------- In silico |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |