Android NDK 和 C++ STL

4

当我为iOS项目编译我的C ++时,一切都很顺利。 但是,在Android上遇到了困难。

我的Application.mk文件如下:

APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-11
APP_STL := stlport_shared

所有的LOCAL_SRC_FILES都已经定义好了。
尝试构建我的模块时,我遇到了以下编译器错误:
jni/Game.hpp: In member function 'const std::pair<pos, Obj*>* MyEnumerator::next()':
jni/Game.hpp:126:23: error: expected type-specifier
jni/Game.hpp:126:23: error: cannot convert 'int*' to 'std::pair<pos, Obj*>*' in assignment
jni/Game.hpp:126:23: error: expected ';'

上面提到的代码行如下:

这行代码的含义是:

this->ptr = new pair<pos, Obj*>::pair(it->first, it->second);

这里,ptr 的类型为 pair<pos, Obj*>*,而 pos 是一个结构体。我已经声明了 using std::pair;
有什么提示可以说明问题出在哪里,应该尝试什么?

3
错误信息是否指向 C++ 的文件和行号?如果是,请发布相关代码。 - paulsm4
1
"pos"是类型还是对象?因为它看起来像是一个对象,如果是这样的话它将无法工作。 - Jonathan Henson
1
此外,“ptr”的类型是什么? - Jonathan Henson
1
尝试将该行更改为:this->ptr = new std::pair<pos, Obj*>(it->first, it->second); - Jonathan Henson
1
我建议放弃使用所有的using指令,直接使用完全限定名称。但是,你发的那一行代码在大多数编译器上都是错误的,应该按照我在之前评论中发表的内容来写。你试过用我的这个文本吗? - Jonathan Henson
显示剩余5条评论
1个回答

4

尝试将该行更改为:

this->ptr = new std::pair<pos, Obj*>(it->first, it->second);

另外,在我看来,应该放弃使用指令并使用完全限定名称。这样做干净、精确,并且不允许命名冲突。如果您必须使用它们,请不要在头文件中使用它们,只在您的实现文件中使用。


1
没有注意到你的评论。 - Karthik T
@KarthikT,我知道了。不用担心。 - Jonathan Henson
1
@JonathanHenson 很好。现在我正在构建,非常感谢你。 - Ken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接