我想对命令行中指定的值设置限制。如果这个范围能像默认值一样自动打印在描述中,那就太好了。
如果有一种方法可以创建我自己的类型并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)输出程序选项。我还需要为某些值添加范围,因此我需要将此信息存储在程序选项中。
有什么建议么?