提升程序选项抛出bad_any_cast异常

时间:2016-10-05 10:18:13

标签: c++ boost

我在 testpo.cpp

中有以下代码
#include <iostream>
#include <boost/program_options.hpp>
#include <fstream>

int main(int argc, char* argv[]) {

  namespace po = boost::program_options;
  po::options_description config_descriptor;
  po::variables_map vm;

  config_descriptor.add_options()
  ("var1", po::value<int>()->required(), "var1");
  //po::store(po::parse_config_file(input_config_file, config_descriptor, false), vm);
  po::store(po::parse_command_line(argc, argv, config_descriptor), vm);
  po::notify(vm);

  try {
    std::cout << vm.count("var1") << std::endl;
    std::cout << "Count printed" << std::endl;
    if (vm.count("var1") > 0) {
      std::cout << "Imhere\n";
      std::cout << "var1: " << vm["var1"].as<int>() << std::endl;
    } else {
      std::cout << "Missing var1 in config file" << std::endl;
    }
  } catch (std::exception& e) {
    std::cout << "Exception: " << e.what() << std::endl;
  }

}

我使用以下命令编译:

g++ -std=c++11 testpo.cpp -lboost_program_options

我这样运行:

./a.out --var1 10

我得到以下输出:

1
Count printed
Imhere
Exception: boost::bad_any_cast: failed conversion using boost::any_cast

我已经看过this,但它似乎没什么帮助。我无法找到我做错的事情。

我的系统的相关配置:

  

g ++(Ubuntu 5.2.1-22ubuntu2)5.2.1 20151010
增强版:1.58

当我在另一个系统上运行它时,配置:

  

g ++(GCC)4.8.3 20140911(Red Hat 4.8.3-9)
提升版本:1.53

这是助推器中的错误吗?

1 个答案:

答案 0 :(得分:0)

由于我只是遇到了同样的问题,为将来参考,我将在此处添加答案。

由于您的

中缺少return语句而引发异常
int main

编辑:罢工。我很傻,忘了在案例陈述中休息一下。