私はCocos2D-Xゲームを書いています。このゲームでは、プレーヤー、敵、その他のキャラクターが属性をに格納しますCCMutableDictionary。これは、のデコレータクラスのようなものです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);
ですから、私が間違っている場合は訂正してください。ただし、std::stringのコピーコンストラクターが呼び出されており、上記のメソッドのいずれかを使用して上記のメソッドstd::stringの1つを呼び出すたびに、一時的なものがスタックにあります。objectForKeyconst char* const
std::stringもしそうなら、それらの定数属性キーがすでにオブジェクトである場合、実行時に効率的であると思います。しかし、どうすればそれを正しい方法で行うことができますか?
次のようにConstants.hファイルでそれらを定義すると、正常にコンパイルされますが、何かが正しくないように感じます。
// in Constants.h
const std::string kAttributeX = "x";
const std::string kAttributeY = "y";
この質問がすでに行われている場合は、お詫び申し上げます。StackOverflowで探していた正確な答えが見つからなかったようです。