使用 Boost.ProgramOptions 继承选项
Inheriting options with Boost.ProgramOptions
在 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_one
和 specific_options_two
实例指定 --flag
选项。例如
./a.out --flag --specific_flag_one
./a.out --flag --specific_flag_two
都有效,因为 --flag
是继承的
在文档的 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_one
和 specific_options_two
都将包含来自 general_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
选项实例以使用另一个实例的选项及其自身的选项
这样的事情将使我能够为 specific_options_one
和 specific_options_two
实例指定 --flag
选项。例如
./a.out --flag --specific_flag_one
./a.out --flag --specific_flag_two
都有效,因为 --flag
是继承的
在文档的 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_one
和 specific_options_two
都将包含来自 general_options