指定 boost::p rogram_options 值的允许值范围
specify allowed value range for boost::program_options value
我想对命令行中指定的值设置限制。如果此范围将自动打印在默认值等描述中,那就太好了。
如果有一种方法可以创建我自己的类型并为我的枚举类型进行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,但我不喜欢这个解决方案,因为它需要 cast,但是没有办法将虚拟函数添加到基本接口。
这样做的目的是扩展程序选项。我需要编写另一个描述输出函数,它将以易于解析的格式(例如 XML)输出程序选项。我还需要为某些值添加范围,因此我需要将此信息存储在程序选项中。
有什么建议吗?
您可以尝试使用具有自定义类型的自定义验证器来保存您的信息。提供的示例是不言自明
相关文章:
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 超出 int 的值范围后的无限循环
- 立即传递其成员时的右值范围
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 类型大小与其值范围之间的关系?
- 是否有一种方法可以根据派生的可能性值范围限制对象参数
- 在某个值范围内生成 BST 的泛型函数
- 带钥匙的C 11地图定义了一个值范围
- 使用较少位的无符号QWORD(64位)的值范围
- 简化的C 如果其他条件对于值范围的多种条件
- C++是否有指定值范围的比较运算符?(比如'in' E语言)?
- uniform_int_distribution使用列表而不是值范围
- 音频单位采样值范围
- 如何在c++中为字符串指定自定义值范围
- 使用值范围进行切换
- 64 位系统上的指针值范围
- 如何在开关语句中选择值范围
- 如何在std::set中获得给定下界和上界的映射中的值范围?
- 值范围的模板专门化
- 32位,64位和80位浮点IEEE-754的可表示值范围