0

我对 boost::program_options 有疑问

我有课

namespace po = boost::program_options;
class imageProcess{
private:
    po::options_description options;
public:
    imageProcess(int argc,char** argv){
        po::options_description desc("Allowed options");
        this->options = desc;

它给了我这些错误:

非静态 const 成员 'const unsigned int boost::program_options::options_description::m_min_description_length',不能使用默认赋值运算符 imgproc 第 163 行,外部位置:/usr/include/boost/program_options/options_description.hpp C/C++问题非静态 const 成员 'const unsigned int boost::program_options::options_description::m_line_length',不能使用默认赋值运算符 imgproc 第 163 行,外部位置:/usr/include/boost/program_options/options_description.hpp C/ C++ 使用已删除函数 'boost::program_options::options_description& boost::program_options::options_description::operator=(const boost::program_options::options_description&)' imageProcess.cpp /imgproc/src 第 20 行 C/C++ 问题的问题

我应该怎么做才能创建 po::options_description 的选项字段实例?

编辑:我知道选项字段已经是一个实例,但是有没有办法在定义此字段后设置描述“允许的选项”(po::options_description options("allowed options"); 也不起作用)?以及我应该如何将先前创建的对象实例存储到类字段中?

4

1 回答 1

5

阅读您的错误:

非静态 const 成员 '<code>const unsigned int boost::program_options::options_description::m_min_description_length',不能使用默认赋值运算符

非静态 const 成员 '<code>const unsigned int boost::program_options::options_description::m_line_length',不能使用默认赋值运算符

使用已删除的函数 '<code>boost::program_options::options_description& boost::program_options::options_description::operator=(const boost::program_options::options_description&)'</p>

它们表明在您的 Boost 版本boost::program_options::options_description中不支持赋值运算符(实际上是operator=v1.33 开始),因为constoptions_description.

你必须——而且无论如何应该——使用ctor-initializer初始化你的options_description实例:

namespace po = boost::program_options;
class imageProcess{
private:
    po::options_description options;
public:
    imageProcess(int argc, char** argv);
};

imageProcess::imageProcess(int argc, char** argv)
   : options("Allowed options")
{}

开始的行:是成员的构造函数参数所在的位置options

于 2013-01-06T00:04:01.053 回答