使用 Boost.ProgramOptions 继承选项

Inheriting options with Boost.ProgramOptions

本文关键字:选项 继承 ProgramOptions Boost 使用      更新时间:2023-10-16

有没有一种好方法可以将 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选项实例使用另一个实例的选项以及它自己的选项

这样的事情将使我能够为specific_options_onespecific_options_two实例指定--flag选项。 例如

./a.out --flag --specific_flag_one
./a.out --flag --specific_flag_two

两者都有效,因为--flag是继承

在文档的多源示例中,您可以看到可以将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的标志