我正在编写一个 Cocos2D-X 游戏,其中玩家、敌人和其他角色将他们的属性存储在 aCCMutableDictionary
中,这在某种程度上是std::map<std::string, CCObject*>
. 可以通过该CCMutableDictionary::objectForKey(const std::string& key)
方法访问字典中的值。
现在,在我的许多 .cpp 文件包含的头文件中,我有一些const char * const
字符串用于访问字典中的值,如下所示:
// in Constants.h
const char* const kAttributeX = "x";
const char* const kAttributeY = "y";
// in a .cpp file
CCObject* x = someDictionary->objectForKey(kAttributeX);
所以,如果我错了,请纠正我,但是每次我使用 a 调用上述方法之一时,都会调用std::string
' 的复制构造函数并且临时在堆栈上,对吗?std::string
objectForKey
const char* const
如果是这样,我觉得如果这些常量属性键已经是std::string
对象,那么在运行时会更有效。但是我该如何以正确的方式做到这一点?
像下面这样在 Constants.h 文件中定义它们可以很好地编译,但我觉得有些事情是不对的:
// in Constants.h
const std::string kAttributeX = "x";
const std::string kAttributeY = "y";
如果这个问题已经被问到,我很抱歉。我似乎无法在 StackOverflow 上找到我正在寻找的确切答案。