Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 互斥选项组_C++_Boost Program Options - Fatal编程技术网

C++ 互斥选项组

C++ 互斥选项组,c++,boost-program-options,C++,Boost Program Options,我越来越熟悉boost的ProgramOptions实用程序,我想知道是否有一种定义互斥选项组的方法。 也就是说,我的程序有不同的流程: 程序--第一个--opt1--opt2… 程序--第二个--opt3--opt4 因此,我对不同流的选择是相互排斥的。 有没有办法定义互斥的选项组 当然,下面的代码可以做到这一点: /*用于检查未指定“opt1”和“opt2”的函数 同时,*/ 无效冲突的\u选项(常量变量\u映射和vm, 常量字符*opt1,常量字符*opt2) { if(vm.count(

我越来越熟悉boost的ProgramOptions实用程序,我想知道是否有一种定义互斥选项组的方法。 也就是说,我的程序有不同的流程:

程序--第一个--opt1--opt2…
程序--第二个--opt3--opt4

因此,我对不同流的选择是相互排斥的。 有没有办法定义互斥的选项组

当然,下面的代码可以做到这一点:

/*用于检查未指定“opt1”和“opt2”的函数
同时,*/
无效冲突的\u选项(常量变量\u映射和vm,
常量字符*opt1,常量字符*opt2)
{
if(vm.count(opt1)&&!vm[opt1].defaulted()
&&vm.count(opt2)&&!vm[opt2].defaulted()
抛出逻辑错误(字符串(“冲突选项”)
+opt1+“‘和’”+opt2+“.”;
}
int main(int ac,char*av[])
{
试一试{
//声明三组选项。
选项描述优先(“第一流选项”);
首先,添加_选项()
(“第一”、“第一流”)
(“opt1”,“选项1”)
(“选项2”,“选项2”)
;
选项描述第二(“第二流选项”);
第二,添加选项()
(“第二流”、“第二流”)
(“opt3”,“选项3”)
(“opt4”,“选项4”)
;
//声明一个选项描述实例,该实例将包括
//所有选项
期权描述所有(“允许期权”);
全部。添加(第一个)。添加(第二个);
变量映射vm;
存储(解析命令行(ac、av、all)、vm);
冲突的_选项(vm,“第一”、“第二”);
冲突的_选项(vm,“第一”,“opt3”);
冲突的_选项(vm,“第一”,“opt4”);
冲突的_选项(vm,“第二”、“opt1”);
冲突的_选项(vm,“第一”,“opt2”);
}
捕获(标准::异常&e)
{
库特