boost::program_options class field

boost::program_options class field

本文关键字:class field options program boost      更新时间:2023-10-16

我有一个问题,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 intBoost::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::操作符= (constboost::program_options::options_description&) ' imageProcess.cpp/imgproc/src行20 C/c++ Problem

我应该怎么做,使po::options_description的选项字段实例?

编辑:我知道选项字段已经是一个实例,但有一种方法来设置描述"允许的选项"定义这个字段后(po::options_description options("允许的选项");也不行)?以及我应该如何存储以前创建的对象的实例到类字段?

阅读错误:

非静态const成员' const unsigned int boost::program_options::options_description::m_min_description_length '不能使用默认赋值操作符

非静态const成员' const unsigned int boost::program_options::options_description::m_line_length '不能使用默认赋值操作符

删除函数' boost::program_options::options_description& boost::program_options::options_description::operator=(const boost::program_options::options_description&) '的使用

它们表明boost::program_options::options_description不支持赋值操作符operator=在你的Boost版本中(实际上是从v1.33开始),因为options_description中的const成员。

你必须——无论如何应该——使用ctor初始化器:

初始化你的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的构造函数参数所在的地方。