C++ 为FBReader编译NDK库时出错

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

我正在尝试编译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;
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构建不会出错。我也会尝试。谢谢:)