c++ - 使用 boost 的 program_options 时,如何确保声明在 C++ 中具有存储类或类型说明符?

标签 c++ boost boost-program-options

我刚刚开始学习 Boost for C++。我正在关注一个使用 boost 中的“program_options”库的示例。下面是我的代码。我正在使用 Visual Studio 并且已经构建了需要构建的 boost 库,向附加的 include 目录添加了 boost,并向附加的链接器目录添加了 boost。

问题出在 desc.add_options() 上。 Visual Studio 表示此声明没有存储类或类型说明符。我不确定这意味着什么以及如何解决它。我一直在寻找解决方案,但我空手而归。任何帮助都是极好的。谢谢!

#include <boost/program_options.hpp>
#include <iostream>

namespace opt = boost::program_options;

opt::options_description desc("All options");


desc.add_options()
    ("apples", opt::value<int>(), "how many apples do you have")
    ("oranges", opt::value<int>(), "how many oranges do you have")
;

最佳答案

你不想要那个。该消息暗示的不是您错过了声明的某些部分。

那一行不是声明,你不应该试图把它变成一个声明。

这是一个典型的误解。冲突的产生是因为编译器期望仅在全局或命名空间范围内声明。 由于您使用的是声明,因此不能将其解释为声明,随之而来的是欢闹。

修复它,例如:

#include <boost/program_options.hpp>
#include <iostream>

namespace opt = boost::program_options;

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

    opt::options_description desc("All options");

    desc.add_options()
        ("apples", opt::value<int>(), "how many apples do you have")
        ("oranges", opt::value<int>(), "how many oranges do you have")
    ;

}

关于c++ - 使用 boost 的 program_options 时,如何确保声明在 C++ 中具有存储类或类型说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838995/

相关文章:

c++ - 填充结构 tm

c++ - Boost::Program_options,传递未知的命令行参数

c++ - 是否可以在没有 RTTI 的情况下使用 Boost Program Options?

C++ 继承和 valgrind 内存泄漏

c++ - 指针逻辑

c++ - C++如何从引用中获取值

c++ - boost::shared_ptr 销毁回调

c++ - 使用 boost 实现 C++11 lambda

c++ - 升压程序选项描述的问题

c++为什么数组没有长度属性