如何从升压1.46传递一个字符串为“VALIDATION_ERROR”的方法?(How to pas

2019-09-21 21:51发布

我试图通过编写发布的程序达拉尔和Triggs它使用Boost库。 我得到了在升压方法错误validation_error由于版本之间使用其作者(差异1.35 ),我使用了一个( 1.46 )。

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

validation_error(const std::string & what);

而版本我跑加速的有以下几点:

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

Answer 1:

你可以这样做

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());


文章来源: How to pass a string to “validation_error” method from Boost 1.46?
标签: c++ boost