2010-09-26 47 views
0

我首先將3值存儲到一對地圖的這樣的問題:一個關於使用常量字符*傳遞參數

void AddMenuAtlasTexture(int tag, const char* filename, const char* textureName) 
{ 
map<const char*, const char*> _item; 
_item.insert(pair<const char*, const char*>(filename, textureName)); 

m_texturesToLoad.insert(pair<int, map<const char*, const char*> >(tag, _item)); 
}; 

然後I的值傳遞給另一個功能是這樣的:

map<const char*, const char*>::iterator _content; 
int _tag = (*m_texturesToLoadIterator).first; 
_content = (*m_texturesToLoadIterator).second.begin(); 
AtlasManagerSingleton->AddAtlas((*_content).first, (*_content).second, _tag); 

「textureName」是這樣一種絕對路徑:「/ Users/eddy/Library/Application Support/iPhone Simulator/User/Applications/5FDE0091-2E93-42FE-BB62-05A16429551D/Ranch.app /../ Documents /shop_tex.png「

my問題是第一個函數可以獲得「textureName」的權利,但第二個函數「AddAtlas」無法獲得路徑,「(* _content).second」爲NULL。

和 「AddAtlas」 的原型是:

void AtlasManager :: AddAtlas(const char *a_configFile, const char *a_spriteName, int a_nKey) 

我使用了XCode開發這個在iPhone開發。

+0

顯示所有你用它來調用'AddMenuAtlasTexture'的代碼。 – 2010-09-26 06:05:30

+1

只是提示:您可以使用 - >運算符而不是(* pointer).stuff。你可以做指針 - >東西。 – JoshD 2010-09-26 06:08:52

+1

嘗試使用m_texturesToLoadIterator->秒代替(* m_texturesToLoadIterator).second我認爲這可能是一個運算符重載問題 – 2010-09-26 06:08:52

回答

0
  • 使用make_pair而不是pair<int, map<const char*, const char*> >
  • 使用->而不是*.
  • 紋理加載器是一個地圖int -> const char* -> const char*。我沒有看到你使用第二個索引的位置。

這大概:

AtlasManagerSingleton->AddAtlas((*_content).first, (*_content).second, _tag) 

應該是:

AtlasManagerSingleton->AddAtlas(_content->first, _content->second.begin()->second, _tag) 
相關問題