2012-12-17 107 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