C++ 为FBReader编译NDK库时出错
我正在尝试编译FBreader库以用于我的项目。两个.so库正在成功编译,但在最后一个库中,它给了我以下错误C++ 为FBReader编译NDK库时出错,c++,android-ndk,C++,Android Ndk,我正在尝试编译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 constru
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;
而xhtmltaginfo列表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;
}
const xhtmltaginfo列表和XHTMLReader::tagInfos(大小和深度)const{
if(myTagDataStack.size()<深度+2){
返回空的信息列表;
}
返回myTagDataStack[myTagDataStack.size()-depth-2]->子级;
}
我不擅长C++。请帮助解决此错误
更新到static const xhtmltaginfo LIST EMPTY_INFO_LIST{}后代码>
以下错误正在发生
static const XHTMLTagInfoList EMPTY_INFO_LIST;
我将引用以下内容:
C++标准(第8.5节):
如果程序调用
常数合格类型T,T应为用户提供的类别类型
默认构造函数
如果我们转到XHTMLtagInfo列表,我们会看到它实际上没有用户定义的ctor
要解决问题,只需使用空初始值设定项:
static const XHTMLTagInfoList EMPTY_INFO_LIST{};
注意,非常量声明不需要它
编辑:请注意,您很可能没有启用-std=c++11,这将修复您的错误
C++标准(第8.5节):
如果程序调用
常数合格类型T,T应为用户提供的类别类型
默认构造函数
如果我们转到XHTMLtagInfo列表,我们会看到它实际上没有用户定义的ctor
要解决问题,只需使用空初始值设定项:
static const XHTMLTagInfoList EMPTY_INFO_LIST{};
注意,非常量声明不需要它
编辑:请注意,您很可能没有启用-std=c++11,这将修复您的错误谢谢,我会在早上尝试,并会让您知道它是否有效。我希望它能工作。我在空信息列表
之后添加了{}
,但是现在我得到以下错误jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp:42:31:错误:默认初始化const类型为“const-xhtmaginfolist”的对象,没有用户提供的默认构造函数static const-xhtmaginfolist EMPTY\u-INFO\u-LIST{};^jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp:42:46:错误:应为“;”顶级声明程序静态常量XHTMLTagInfoList后为空\u INFO\u LIST{};^代码>。请帮忙。对不起,我怎么知道哪条线的号码是什么?最后一个错误是关于分号的,你添加了吗?我在问题中添加了截图。目前我已经移除了const并构建了它,它是否会对库产生任何负面影响。我会在添加分号后尝试。我已经尝试在空信息列表
后添加分号,因此该行现在是静态常量xhtmaginfolist空信息列表;{};代码>。这也给出了错误为error:expected unqualified id static const xhtmltaginfo LIST EMPTY\u INFO\u LIST;{};代码>谢谢,我会在早上尝试,并会让你知道它是否有效。我希望它能工作。我在空信息列表
之后添加了{}
,但是现在我得到以下错误jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp:42:31:错误:默认初始化const类型为“const-xhtmaginfolist”的对象,没有用户提供的默认构造函数static const-xhtmaginfolist EMPTY\u-INFO\u-LIST{};^jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp:42:46:错误:应为“;”顶级声明程序静态常量XHTMLTagInfoList后为空\u INFO\u LIST{};^代码>。请帮忙。对不起,我怎么知道哪条线的号码是什么?最后一个错误是关于分号的,你添加了吗?我在问题中添加了截图。目前我已经移除了const并构建了它,它是否会对库产生任何负面影响。我会在添加分号后尝试。我已经尝试在空信息列表
后添加分号,因此该行现在是静态常量xhtmaginfolist空信息列表;{};代码>。这也给出了错误为error:expected unqualified id static const xhtmltaginfo LIST EMPTY\u INFO\u LIST;{};代码>那么,你找到解决方案了吗?或者您只是在静态常量xhtmltaginfo列表EMPTY\u INFO\u列表中省略了常量代码>?只是省略了const
部分,它工作正常。顺便说一句,我找到了另一个解决方案,如果在应用程序中添加NDK\u工具链版本:=4.9
。mk构建不会出错。我也会尝试。谢谢:)那么,你找到解决办法了吗?或者您只是在静态常量xhtmltaginfo列表EMPTY\u INFO\u列表中省略了常量代码>?只是省略了const
部分,它工作正常。顺便说一句,我找到了另一个解决方案,如果在应用程序中添加NDK\u工具链版本:=4.9
。mk构建不会出错。我也会尝试。谢谢:)