我正在尝试编译FBreader库以用于我的项目。其中两个.so库正在成功编译,但在最后一个库中它给出了以下错误
jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp:42:31: error: default initialization of an object of const type 'const XHTMLTagInfoList' without a
user-provided default constructor
static const XHTMLTagInfoList EMPTY_INFO_LIST;
^
查看c ++代码后面是发生错误的行
static const XHTMLTagInfoList EMPTY_INFO_LIST;
XHTMLTagInfoList
var是
const XHTMLTagInfoList &XHTMLReader::tagInfos(size_t depth) const {
if (myTagDataStack.size() < depth + 2) {
return EMPTY_INFO_LIST;
}
return myTagDataStack[myTagDataStack.size() - depth - 2]->Children;
}
我对c ++并不擅长。请帮助解决错误
更新为static const XHTMLTagInfoList EMPTY_INFO_LIST{};
发生以下错误
答案 0 :(得分:0)
我会引用此answer:
C ++标准(第8.5节)说:
如果程序要求默认初始化a的对象 const限定类型T,T应为具有用户提供的类类型 默认构造函数。
如果我们转到XHTMLTagInfoList definition,我们会发现它确实没有用户定义的ctor。
要解决您的问题,您只需使用空的初始化程序:
static const XHTMLTagInfoList EMPTY_INFO_LIST{};
请注意,非const声明
不需要它编辑:请注意,您很可能没有启用-std = c ++ 11,这样可以解决您的错误