【问题标题】:specify allowed value range for boost::program_options value指定 boost::program_options 值的允许值范围
【发布时间】:2013-10-30 14:59:49
【问题描述】:

我想对命令行中指定的值设置限制。如果这个范围能像默认值一样自动打印在描述中,那就太好了。

如果有一种方法可以创建我自己的类型并为我的枚举类型专门化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&lt;&gt; 并检查值是否为 range_int,但我不喜欢此解决方案,因为它需要强制转换,但无法将虚函数添加到基础界面。

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

有什么建议吗?

【问题讨论】:

    标签: c++ boost boost-program-options


    【解决方案1】:

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

    【讨论】:

    • @axe 既然回答了你的疑问,请接受回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多