2
我想设置命令行中指定的值限制。如果这个范围会自动打印在像默认值这样的描述中,那将会很棒。指定boost :: program_options的允许值范围
如果有一种方法可以创建我自己的类型并为我的枚举类型执行po::value
专业化,这也是有趣的。
例如
enum percent
{
percent0,
percent10,
percent20,
percent30,
percent40,
...
percent100
};
po::value<percent>() <-- gives compile time error
更新
我想补充有关允许值的value_semantic
对象,像它的默认值或必需标志来完成。
我注意到,typed_value
类是多态的和可扩展的,所以我想创建一个新的类
class range_int : public po::typed_value<int> {}
后来迭代描述的选项时,我可以做dynamic_cast<>
,并检查是否值RANGE_INT,但我不喜欢这种解决方案,因为它需要强制转换,但是没有办法将虚拟功能添加到基本接口。
这样做的目的是扩展程序选项。我需要编写另一个描述输出函数,它将以易于解析的格式(例如XML)输出程序选项。我还需要为某些值添加范围,所以我需要将这些信息存储在程序选项中。
有什么建议吗?
谢谢。自定义验证会有帮助。我更新了这个问题。 – axe
@axe由于这个答案你查询,请接受答案。 – CCoder