我正在编写一个使用 Boost 程序选项库的程序,我注意到以下语法自从我看到它以来一直困扰着我:
desc.add_options()
("help","produce help message")
( /* other flag, value, description pairs here */)
;
我看到在标题中,operator() 被覆盖,但我不确定这如何使它在语法上是正确的。
其次,与只调用 add_options() 多次相比,这种语法有什么优势(除了炫耀您可以像这样操作语法之外)?
最佳答案
add_options
成员函数返回 options_description_easy_init
类型的对象。后者重载了 operator()
以返回对自身的引用。这使您可以像在代码段中显示的那样链接调用。
链接调用和多次调用 add_options
的区别在于,在前一种情况下,会创建一个 options_description_easy_init
实例,并且每次调用 operator ()
,它将选项添加到所有者(options_description
)。如果您要多次调用 add_options
,则每次调用都会创建一个新的 options_description_easy_init
实例。
关于c++ - Boost 程序选项添加选项语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486588/