C ++マップ値が実行時に変更されない、何が間違っているのですか?

ヌル

私のゲームのグローバルクラスにrealMapというマップがあります。これは、realMapがスコープ内にある限り、ゲーム内のすべてのオブジェクトがアクセスできる変数をマップに格納するために使用されます。基本的にglobal.はGamemakerのようです。したがって、マップ内のすべてが実行時に保存されます。

これはマップ初期化コードですstd::map<const char*, Real> realMap;(にReal宣言された別のファイルにありdoubleます)。

私のプレーヤーオブジェクトでは、開始時にプレーヤーは globalObject.realMap["playerDead"] = false;

だから私はチェックし、それは0に等しい。

しかし、プレイヤーが死ぬと、マップキーをに設定するtrueことになっていますが、そうではありません。表示されたメッセージを実行して、その値を確認しましたが、まだ0です。コードは次のとおりです。

ObjGlobal->realMap["playerDead"] = true;
Real tempVal = ObjGlobal->realMap.at("playerDead");
agk::Message(agk::Str(int(tempVal)));

先ほど述べたように、agk :: Messageは0を表示します。

私は何が間違っているのですか?私はまだマップに不慣れで、C ++全般に少し慣れていないので、ばかげた間違いである場合は申し訳ありません。

前もって感謝します

ジョナサンポッター

マップへのキーとして文字列リテラルへのポインタを使用していますが"playerDead"、コードには2つの異なる文字列があります。リンカが2つの文字列を同じポインタに最適化していない限り(多くのリンカが行う最適化ですが、そうする必要はありません)、キーは実際には異なるものになります。

マップ定義を変更するstd::map<std::string, Real>と、キーは実際にはメモリ内のアドレスではなく文字列の内容に基づいているため、期待どおりに機能するはずです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このC ++ forループの実行時間に大きな違いがあるのはなぜですか?

分類Dev

C#AForgeパターンマッチングの精度が非常に低い-何が間違っているのですか?

分類Dev

C#変数に間違った値が格納されています

分類Dev

C ++配列のインデックス値が署名され、size_t型を中心に構築されていないのはなぜですか(または私はそれが間違っています)?

分類Dev

cのrealloc()で何が間違っていますか?

分類Dev

このC ++コードで何が間違っているのですか?

分類Dev

変数を変更していないのに、変数の値が変更されるのはなぜですか?C

分類Dev

他のメンバーが新しい値に設定されると、Cユニオンメンバーは特定の/間違った値を与えます。Cの次のコードでこの出力が行われるのはなぜですか?

分類Dev

DirectX C ++でマトリックス変換を試行すると、VertexShaderからの出力が間違っている

分類Dev

複数文字定数、何が間違っているのですか?C

分類Dev

同じジョブが変数によって実行されるのに、なぜマクロを使用するのですか?C言語で?

分類Dev

Cで構造体を渡す際に何が間違っているのですか?

分類Dev

初心者向けのC ++ネストループ。私は何が間違っているのですか?

分類Dev

現在のスレッドで適切なロケールが設定されているにもかかわらず、Linux Ubuntu 18.04ではC#DateTime.ToString()が間違っています

分類Dev

この難読化されたCコードはmain()なしで実行すると主張していますが、実際には何をしますか?

分類Dev

C#でWindowsによって実行されるプログラム(Windowsの起動時に実行)からユーザーによって実行されるプログラムを診断するにはどうすればよいですか?

分類Dev

C ++で変更されている間にビットマップをストリーミングする

分類Dev

C#-クラス定数が参照されているときに、実行がインスタンス変数に流れるのはなぜですか?

分類Dev

C ++:ビットマップの読み取りが間違っています

分類Dev

Cでのこのヒープソートの実装の何が問題になっていますか?

分類Dev

C#-ビットからInt32に変換すると間違った値が生成されます

分類Dev

C#-ビットからInt32に変換すると間違った値が生成されます

分類Dev

c#:ループ内で新しい値が割り当てられていないのにグローバル変数の値が変更された

分類Dev

乱数ジェネレーターを変更すると、Cでのクイックソートの実行時間が変更される理由

分類Dev

BMI計算機の割り当て。c#。私は何が間違っているのですか?

分類Dev

必要なヘッダーファイルがコメントアウトされているにもかかわらず、このC ++プログラムがコンパイルされて実行されるのはなぜですか?

分類Dev

ドット演算子の値がC ++で変更されないのはなぜですか?

分類Dev

cのリンクリスト(ここで何が間違っているのですか?)

分類Dev

C ++ 11では実行時に参照が明らかに変更される

Related 関連記事

  1. 1

    このC ++ forループの実行時間に大きな違いがあるのはなぜですか?

  2. 2

    C#AForgeパターンマッチングの精度が非常に低い-何が間違っているのですか?

  3. 3

    C#変数に間違った値が格納されています

  4. 4

    C ++配列のインデックス値が署名され、size_t型を中心に構築されていないのはなぜですか(または私はそれが間違っています)?

  5. 5

    cのrealloc()で何が間違っていますか?

  6. 6

    このC ++コードで何が間違っているのですか?

  7. 7

    変数を変更していないのに、変数の値が変更されるのはなぜですか?C

  8. 8

    他のメンバーが新しい値に設定されると、Cユニオンメンバーは特定の/間違った値を与えます。Cの次のコードでこの出力が行われるのはなぜですか?

  9. 9

    DirectX C ++でマトリックス変換を試行すると、VertexShaderからの出力が間違っている

  10. 10

    複数文字定数、何が間違っているのですか?C

  11. 11

    同じジョブが変数によって実行されるのに、なぜマクロを使用するのですか?C言語で?

  12. 12

    Cで構造体を渡す際に何が間違っているのですか?

  13. 13

    初心者向けのC ++ネストループ。私は何が間違っているのですか?

  14. 14

    現在のスレッドで適切なロケールが設定されているにもかかわらず、Linux Ubuntu 18.04ではC#DateTime.ToString()が間違っています

  15. 15

    この難読化されたCコードはmain()なしで実行すると主張していますが、実際には何をしますか?

  16. 16

    C#でWindowsによって実行されるプログラム(Windowsの起動時に実行)からユーザーによって実行されるプログラムを診断するにはどうすればよいですか?

  17. 17

    C ++で変更されている間にビットマップをストリーミングする

  18. 18

    C#-クラス定数が参照されているときに、実行がインスタンス変数に流れるのはなぜですか?

  19. 19

    C ++:ビットマップの読み取りが間違っています

  20. 20

    Cでのこのヒープソートの実装の何が問題になっていますか?

  21. 21

    C#-ビットからInt32に変換すると間違った値が生成されます

  22. 22

    C#-ビットからInt32に変換すると間違った値が生成されます

  23. 23

    c#:ループ内で新しい値が割り当てられていないのにグローバル変数の値が変更された

  24. 24

    乱数ジェネレーターを変更すると、Cでのクイックソートの実行時間が変更される理由

  25. 25

    BMI計算機の割り当て。c#。私は何が間違っているのですか?

  26. 26

    必要なヘッダーファイルがコメントアウトされているにもかかわらず、このC ++プログラムがコンパイルされて実行されるのはなぜですか?

  27. 27

    ドット演算子の値がC ++で変更されないのはなぜですか?

  28. 28

    cのリンクリスト(ここで何が間違っているのですか?)

  29. 29

    C ++ 11では実行時に参照が明らかに変更される

ホットタグ

アーカイブ