2012-12-17 70 views
4

编译我的iOS项目的C++时,所有的收益都很好。不过,我在Android上遇到困难。Android NDK和C++ STL

我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); 

这里,ptrpair<pos, Obj*>*类型和pos的是一个结构。我宣布using std::pair;

任何提示什么是错的,以及要尝试什么?

+3

错误消息是否引用C++文件和行#?如果是这样,请张贴相关代码。 – paulsm4

+1

什么是“pos”,一个类型或对象?因为它似乎是一个对象,如果是这种情况,它将无法工作。 –

+0

“pos”是一个结构体。但正如我所说,该项目在iOS中使用默认编译器进行编译。 – SK9

回答

4

尝试改变行改为:

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

而且恕我直言,失去使用指令的,并使用完全合格的名称。它干净,精确,并且不允许命名冲突。如果您必须使用它们,请不要在头文件中使用它们,只在您的实现文件中使用它们。

+1

没有注意到你的评论 –

+0

@KarthikT,我想通了。别担心。 –

+1

@JonathanHenson完美。我现在修好了,非常感谢你。 – SK9