2013-07-29 47 views
10

Tôi đang cố gắng khởi tạo bản đồ trong tiêu đề có mã sau, nhưng nó vẫn cho tôi lỗi trong tiêu đề. Tôi đang sử dụng C++ 11, do đó, điều này sẽ có thể, phải không?Lỗi khởi tạo bản đồ C++ tĩnh C2552: không thể được khởi tạo với danh sách khởi tạo

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)} 
     } 
    }, 
}; 

Cảm ơn bạn trước! ~ grambler1

+0

Phụ thuộc vào phiên bản VS của bạn và tôi không chắc liệu nó có được hỗ trợ hay không. – hmjd

+0

Tôi đang sử dụng Express VS2012. Danh sách trình khởi tạo được hỗ trợ bởi chuẩn C++ 11 mới – BarrensZeppelin

+0

Có, chúng là nhưng chúng có thể không được triển khai trong VS2012 (và nó xuất hiện từ lỗi này mà chúng không có). – hmjd

Trả lời

14

VS2012 hỗ trợ cú pháp danh sách khởi tạo, nhưng việc triển khai VS2012 std::map thì không. Bạn sẽ phải đợi hỗ trợ cho việc này để được thêm vào.

+1

Hỗ trợ cho danh sách khởi tạo đã được thêm vào trong Visual Studio 2013. Bạn không thể khởi tạo khung trong VS2012. http://msdn.microsoft.com/en-us/library/vstudio/bb386063(v=vs.120).aspx –

+0

CTP 2012 bao gồm hỗ trợ khởi tạo đồng bộ. –

Các vấn đề liên quan