我才刚刚开始学习Boost for C ++。我正在跟踪一个使用boost中的“ program_options”库的示例。下面是我的代码。我正在使用Visual Studio,并且已经构建了需要构建的Boost库,已将boost添加到其他include目录,并将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/

10-17 01:39