http://www.cocos2d-x.org/wiki/Valueによると、どちらを使用する値とcocos2d-x V3 C++のstd :: string?
値が文字列だけでなく、int型を扱うことができ、フロート、ブールなど
私は
std::string
かを使用しての選択をしなければならないとき、私は混乱しています
Value
どのような状況で私はstd :: stringよりもValueを使用する必要がありますか?
http://www.cocos2d-x.org/wiki/Valueによると、どちらを使用する値とcocos2d-x V3 C++のstd :: string?
値が文字列だけでなく、int型を扱うことができ、フロート、ブールなど
私は
std::string
かを使用しての選択をしなければならないとき、私は混乱しています
Value
どのような状況で私はstd :: stringよりもValueを使用する必要がありますか?
あなたはValue
オブジェクトを誤解していると思います。
cocos2d ::値は、多くのプリミティブ([...]とstd ::文字列)プラスのラッパークラスです
:あなたがにリンクされているドキュメントに書かれたとして、だから実際にValue
は、他の種類の変数をラップするオブジェクトです。これは、ValueMap
(Values
の文字列のハッシュ - 各Value
は異なるタイプのオブジェクトになることがあります)のような緩やかに型付けされた構造を持つようにします。 ValueVector
(Values
のリスト)。
たとえば、すべての文字列で、値の異なる一連のキーを持つ構成ハッシュを作成する場合は、バニラC++で、必要な型の値ごとに個別のデータ構造を作成する必要があります保存するのではなく、Value
であなただけ行うことができます。
unordered_map<std::string, cocos2d::Value> configuration;
configuration["numEnemies"] = Value(10);
configuration["gameTitle"] = Value("Super Mega Raiders");
それは強く型付けされた言語であるC言語でいくつかの緩いタイピングを++作成するだけのメカニズムです。
あなたはこのような何かを持つ値に文字列を保存することができます:
std::string name = "Vidur";
Value nameVal = Value(name);
をし、後ででそれを取得:
std::string retrievedName = nameVal.asString();
あなたが間違った型としてValue
を解析しようとすると、これはコンパイラが把握できるものではないため、実行時にエラーが発生します。
質問がある場合はお知らせください。