编译FBReader的NDK库时出错

时间:2016-12-15 17:46:20

标签: 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 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{};

发生以下错误

Error ScreenShot

1 个答案:

答案 0 :(得分:0)

我会引用此answer

C ++标准(第8.5节)说:

  

如果程序要求默认初始化a的对象   const限定类型T,T应为具有用户提供的类类型   默认构造函数。

如果我们转到XHTMLTagInfoList definition,我们会发现它确实没有用户定义的ctor。

要解决您的问题,您只需使用空的初始化程序:

static const XHTMLTagInfoList EMPTY_INFO_LIST{};

请注意,非const声明

不需要它

编辑:请注意,您很可能没有启用-std = c ++ 11,这样可以解决您的错误