使用Boost.ProgramOptions继承选项

时间:2017-01-10 10:58:50

标签: c++ boost boost-program-options

是否有一种很好的方法可以从boost中的另一个options_description对象链接继承程序选项?例如

auto general_options = po::options_description{};
general_options.add_options()
   ("flag", "Information for --flag");

auto specific_options_one = po::options_description{};
specific_options.add_options(general_options)
    ("specific_flag_one", "Information for specific flag");

auto specific_options_two = po::options_description{};
specific_options_two.add_options(general_options)
    ("specific_flag_two", "Information for specific flag");

即。获取specific_options选项实例以使用其他实例的选项以及它自己的

这样的事情使我能够为--flagspecific_options_one实例指定specific_options_two选项。例如

./a.out --flag --specific_flag_one
./a.out --flag --specific_flag_two
由于--flag是继承的,因此

都有效

1 个答案:

答案 0 :(得分:1)

在文档的Multiple Sources Example中,您可以看到可以将option_description添加到另一个,这意味着您可以执行以下操作:

auto general_options = po::options_description{};
general_options.add_options()
   ("flag", "Information for --flag");

auto specific_options_one = po::options_description{};
specific_options.add(general_options).add_options(general_options)
    ("specific_flag_one", "Information for specific flag");

auto specific_options_two = po::options_description{};
specific_options_two.add(general_options).add_options(general_options)
    ("specific_flag_two", "Information for specific flag");

然后,specific_options_onespecific_options_two都会包含来自general_options的标记