我正在尝试编译由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
?
答案 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());