次のように、ヘッダー ファイルで静的な順序付けされていないマップを宣言しました。
static boost::unordered_map<KeyAction, sf::Key::Code> WindowKeyMap;
その同じヘッダー ファイルに、マップをいくつかの値で埋める関数があります。
static void Initialize(std::string &file)
{
WindowKeyMap[MoveLeft] = sf::Key::Code::Left;
WindowKeyMap[MoveRight] = sf::Key::Code::Right;
WindowKeyMap[MoveUp] = sf::Key::Code::Up;
WindowKeyMap[MoveDown] = sf::Key::Code::Down;
std::cout << std::endl << WindowKeyMap.size() << std::endl;
}
後で私のプログラムで、別のクラス/関数内で、値の1つを読み取ろうとします:
std::cout << std::endl << WindowKeyMap.size() << std::endl;
auto test2 = WindowKeyMap[MoveRight];
しかし、マップは常に空です。コンソールへの出力は、初期化ルーチンから常に 4 になり、2 番目の cout からは 0 になります。静的マップはプログラム全体で永続的だと思っていたので、静的マップがどのように空になるかについて少し混乱しています。誰でも光を当てることができますか?
ありがとう