如何将字符串传递给" validation_error"方法来自Boost 1.46?

时间:2012-08-29 20:04:26

标签: c++ boost

我正在尝试编译由Dalal and Triggs发布的使用Boost库的程序。由于作者使用的版本(validation_error)与我使用的版本(1.35)之间的差异,我在Boost方法1.46中出错。

old version中,作者使用的validation_error方法具有以下结构:

validation_error(const std::string & what);

我正在运行的version具有以下内容:

validation_error(kind_t kind, const std::string & option_value = "", 
                 const std::string & option_name = "");

在代码中,作者正在将string传递给旧validation_error方法(下面的示例)。

std::ostringstream ost;
ost << "value " << *value
      << " greater than max value " << max;
throw po::validation_error(ost.str());

如何将此string传递给新版validation_error

1 个答案:

答案 0 :(得分:3)

您可以执行类似

的操作
throw boost::program_options::validation_error(
    boost::program_options::validation_error::invalid_option_value,
    "option name",
    *value
);

throw boost::program_options::invalid_option_value(ost.str());