我在头文件中声明了一个静态无序映射,如下所示:
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;
}
稍后在我的程序中,在一个单独的类/函数中,我尝试读取其中一个值:
std::cout << std::endl << WindowKeyMap.size() << std::endl;
auto test2 = WindowKeyMap[MoveRight];
但地图总是空的。控制台的输出始终是初始化例程中的 4,然后是第二个 cout 中的 0。我认为静态地图在整个程序中是持久的,所以我对我的静态地图如何变成空有点困惑。任何人都可以解释一下吗?
谢谢