Boost::program_options проверка для каждого аргумента, а не для каждого типа аргумента?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Boost::program_options проверка для каждого аргумента, а не для каждого типа аргумента?

Сообщение Anonymous »

Код: Выделить всё

boost::program_options
, кажется, поддерживает некоторый уровень пользовательской проверки, но мне кажется странным, что проверка написана с точки зрения типов, а не для каждого аргумента, и мне интересно, не упускаю ли я что-то здесь.

Например, у вас есть программа «редактирования файлов», которая принимает входные и выходные имена файлов из командной строки. Далее предположим, что вы хотите сохранить их в переменных типа boost::filesystem::path. Теперь предположим, что у нас есть требование, чтобы входной файл должен существовать, а выходной файл не существовал (т. е. если выходной файл не существует). существует, мы создадим его.) В идеале у нас должен быть способ проверить существование входного аргумента и отдельно то, что выходной файл либо существует и доступен для записи, либо находится в каталоге, мы можем написать. (Конкретные различия здесь на самом деле не имеют значения. Это применимо к любой ситуации, когда вы используете один и тот же тип в нескольких местах, где вы хотели бы иметь разные правила проверки в зависимости от использования.)

Поскольку мы настраиваем валидаторы, создавая переопределения validate (которые предположительно находятся во время компиляции по их сигнатурам типов, похоже, что мы можем иметь только один валидатор для всех экземпляров boost::filesystem ::путь. Я видел ловушку notify, но сигнатура этих обратных вызовов имеет квалификатор const, поэтому не похоже, что вы можете изменить значение, и в документации неясно, как throw< /code>в обратном вызове notify будет работать система проверки.

Это кажется довольно фундаментальным ограничением на тот момент, когда я думаю, что я Я, наверное, что-то упустил. Мысли?

Подробнее здесь: https://stackoverflow.com/questions/454 ... ument-type
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»