2

我正在尝试编译由Dalal 和 Triggs发布的使用 Boost 库的程序。validation_error由于作者使用的版本1.351.46

旧版本中,validation_error作者使用的方法具有以下结构:

validation_error(const std::string & what);

我正在运行的 Boost版本如下:

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

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

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

我怎样才能将它传递string给新版本validation_error

4

1 回答 1

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());
于 2012-08-29T20:37:06.673 回答