2

Boost ライブラリを使用するDalal と Triggsによってリリースされたプログラムをコンパイルしようとしています。作成者が使用したバージョン ( ) と私が使用しているvalidation_errorバージョン ( ) の違いにより、Boost メソッドでエラーが発生しました。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 = "");

コードでは、作成者は astringを古い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 に答える