2013-10-30 84 views
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)输出程序选项。我还需要为某些值添加范围,所以我需要将这些信息存储在程序选项中。

有什么建议吗?

回答

2

您可以尝试使用具有自定义类型的custom validator来保存您的信息。 提供的示例不言自明

+0

谢谢。自定义验证会有帮助。我更新了这个问题。 – axe

+0

@axe由于这个答案你查询,请接受答案。 – CCoder