为boost :: program_options值指定允许的值范围

时间:2013-10-30 14:59:50

标签: c++ boost 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<>并检查value是否是range_int,但是我不喜欢这个解决方案,因为它需要强制转换,但是没有办法添加虚函数基础界面。

这样做的目的是扩展程序选项。我需要编写另一个描述输出函数,它将以易于解析的格式输出程序选项(例如XML)。我还需要为某些值添加范围,所以我需要将这些信息存储在程序选项中。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用自定义类型的custom validator来保存您的信息。 提供的示例是自解释