我遇到了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 提高:: 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 ++ 问题使用删除的功能 “推动:: program_options :: options_description&安培; 提高:: program_options :: options_description ::运算符=(常量 boost :: program_options :: options_description&)'imageProcess.cpp / imgproc / src line 20 C / C ++问题
如何制作po :: options_description的选项字段实例?
编辑: 我知道选项字段已经是一个实例,但有一种方法可以在定义此字段后设置描述“允许的选项”(po :: options_description选项(“允许的选项”);也不起作用)?我应该如何将以前创建的对象实例存储到类字段中?
答案 0 :(得分:5)
阅读您的错误:
非静态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
does not support the assignment operator operator=
,它们表示您的Boost版本中the const
member within options_description
(实际上是自v1.33起)。
你必须 - 而且应该 - 使用 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
的构造函数参数的位置。