2013-07-29 62 views
10

次のコードでヘッダーのマップを初期化しようとしていますが、タイトルにエラーが表示され続けます。私はC++ 11を使用していますので、これは可能でしょうか?スタティックC++マップの初期化エラーC2552:非集計を初期化リストで初期化できません。

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

+0

は、VSのバージョンに依存し、それがすべてでサポートされている場合、私はわかりませんよ。 – hmjd

+0

私はVS2012 Expressを使用しています。 イニシャライザリストは、新しいC++ 11標準でサポートされています。 – BarrensZeppelin

+0

はい、VS2012では実装されていない可能性があります(このエラーからは表示されません)。 – hmjd

答えて

14

VS2012はイニシャライザリスト構文をサポートしていますが、VS2012の実装はstd::mapではありません。これが追加されるのを待つ必要があります。

+1

Visual Studio 2013でイニシャライザリストのサポートが追加されました。VS2012でブラケット初期化はできません。 http://msdn.microsoft.com/en-us/library/vstudio/bb386063(v=vs.120).aspx –

+0

2012 CTPには、一様な初期化のサポートが含まれています。 –

関連する問題