使用const char *传递参数的问题

时间:2010-09-26 05:59:12

标签: iphone char const objective-c++

我首先将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));
};

然后我将值传递给另一个函数,如下所示:

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 /../文档/ shop_tex.png“

我的问题是第一个函数可以得到“textureName”,但第二个函数“AddAtlas”无法获取路径,“(* _content).second”为NULL。

和“AddAtlas”原型是:

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

我使用XCode在iPhone开发中开发它。

1 个答案:

答案 0 :(得分: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)