2013-07-29 21 views
10

ile başlatılamıyor Aşağıdaki kodla bir başlıktaki bir haritayı başlatmaya çalışıyorum, ancak başlığın içinde bana hata veriyor. C++ 11 kullanıyorum, bu mümkün olmalı, değil mi?Statik C++ harita başlatma hatası C2552: toplayıcılar, başlatıcı listesi

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

Şimdiden teşekkürler! ~ grambler1

+0

VS sürümüne bağlıdır ve bu hiç destekleniyorsa ben emin değilim. – hmjd

+0

VS2012 Express kullanıyorum. Başlatıcı listesi yeni C++ 11 standardı tarafından desteklenmektedir – BarrensZeppelin

+0

Evet, ancak bunlar VS2012'de uygulanamayabilirler (ve bu hatadan değiller). – hmjd

cevap

14

VS2012 başlatıcı listesi sözdizimini destekler, ancak std::map'un VS2012 uygulaması bunu yapmaz. Bunun eklenebilmesi için destek beklemeniz gerekecek.

+1

Visual Studio 2013'de başlatıcı listesi desteği eklendi. VS2012'de parantez içinde başlatılamıyor. http://msdn.microsoft.com/en-us/library/vstudio/bb386063(v=vs.120).aspx –

+0

2012 CTP, tek tip başlatma için destek içerir. –

İlgili konular