我有一个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;
Run Code Online (Sandbox Code Playgroud)
它给了我这些错误:
非静态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 line 20 C/C++问题
我应该怎么做po :: options_description的选项字段实例?
编辑:我知道选项字段已经是一个实例,但有一种方法可以在定义此字段后设置描述"允许的选项"(po :: options_description选项("允许的选项");也不起作用)?我应该如何将以前创建的对象实例存储到类字段中?
阅读你的错误:
非静态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起),因为其中的const成员options_description.
您必须 - 并且无论如何应该 - options_description使用ctor-initializer初始化您的实例:
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")
{}
Run Code Online (Sandbox Code Playgroud)
行开始:是成员的构造函数参数的位置options.