静态C ++映射初始化错误C2552:无法使用初始化列表初始化非聚合

时间:2013-07-29 15:13:31

标签: c++ map initialization

我正在尝试使用以下代码初始化标题中的地图,但它一直在给我标题中的错误。我正在使用C ++ 11,所以这应该是可能的,对吗?

typedef std::map<NPCAnimation::ID, std::map<Direction::ID, sf::Time>> AnimationSpeedMap;
AnimationSpeedMap AnimationSpeeds = {
    {NPCAnimation::WALK, {
            {Direction::LEFT, sf::milliseconds(100)},
            {Direction::RIGHT, sf::milliseconds(100)},
            {Direction::UP, sf::milliseconds(200)},
            {Direction::DOWN, sf::milliseconds(200)}
        }
    },

    {NPCAnimation::IDLE, {
            {Direction::LEFT, sf::milliseconds(600)},
            {Direction::RIGHT, sf::milliseconds(600)},
            {Direction::UP, sf::milliseconds(600)},
            {Direction::DOWN, sf::milliseconds(600)}
        }
    },

    {NPCAnimation::SPECIAL, {
            {Direction::LEFT, sf::milliseconds(500)},
            {Direction::RIGHT, sf::milliseconds(500)},
            {Direction::UP, sf::milliseconds(500)},
            {Direction::DOWN, sf::milliseconds(500)}
        }
    },
};

提前致谢! ~grambler1

2 个答案:

答案 0 :(得分:14)

VS2012支持初始化列表语法,但{2012}的VS2012实现不支持。您将不得不等待添加支持。

答案 1 :(得分:6)

我有同样的问题。不幸的是,在VS2013之前不支持括号初始化和许多其他C ++ 11功能。

证明:http://msdn.microsoft.com/en-us/library/vstudio/bb386063(v=vs.120).aspx