boost::program_options::notify() 有什么用?

新手上路,请多包涵

这个问题是关于 C++ Boost program_options 库的。

所有教程都非常清楚,我应该在我完成的变量映射上调用 notify() ,但我不确定这实际上对我做了什么。将其注释掉似乎没有任何效果,文档也没有详细说明:

http://www.boost.org/doc/libs/1_47_0/doc/html/boost/program_options/notify.html

其他消息来源表明它运行“用户定义”功能。如果是这样,这些函数是如何注册的,它们是做什么的?他们会抛出异常吗?

原文由 olooney 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
1 个回答

notify() 是 value_semantic 的 成员函数。它是一个钩子,一旦确定了选项的最终值,该选项应该采取的任何操作都可以自动完成并封装在它自己的函数中。这可以防止代码具有一个作用于每个选项的长函数。随着可能选项的增加,这种程序代码可能会变得笨拙。

您可以 在 Boost 手册中看到设置通知功能的示例

 options_description desc;
desc.add_options()
    ("compression", value<int>()->default_value(10), "compression level")
    ("email", value< vector<string> >()
        ->composing()->notifier(&your_function), "email")
    ;

这些声明指定第一个选项的默认值为 10,第二个选项可以出现多次,所有实例都应该合并,解析完成后,库将调用函数 &your_function,传递“电子邮件”的值选项作为参数。

原文由 Conspicuous Compiler 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题