Statique en C++ erreur d'initialisation de carte C2552: non-agrégats ne peuvent pas être initialisées avec la liste des initialiseurs
Je suis en train d'initialiser une carte dans un en-tête avec le code suivant, mais il continue de me donner l'erreur dans le titre. Je suis à l'aide de C++11, donc cela devrait être possible, non?
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)}
}
},
};
Merci d'avance!
~ grambler1
Dépend de votre version de VS, et je suis pas sur si c'est pris en charge à tous.
Je suis l'aide de VS2012 Express. Initialiseur de listes sont pris en charge par le nouveau standard C++11
Oui, ils le sont mais ils pourraient ne pas être mises en œuvre dans VS2012 (et il semble de cette erreur, ils ne le sont pas).
Support d'initialisation et de nombreux autres C++ 11 fonctionnalités ont été ajoutées dans VS2013. msdn.microsoft.com/en-us/library/vstudio/...
C'est vrai, j'avais besoin de savoir. Merci les gars!
Je suis l'aide de VS2012 Express. Initialiseur de listes sont pris en charge par le nouveau standard C++11
Oui, ils le sont mais ils pourraient ne pas être mises en œuvre dans VS2012 (et il semble de cette erreur, ils ne le sont pas).
Support d'initialisation et de nombreux autres C++ 11 fonctionnalités ont été ajoutées dans VS2013. msdn.microsoft.com/en-us/library/vstudio/...
C'est vrai, j'avais besoin de savoir. Merci les gars!
OriginalL'auteur BarrensZeppelin | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
VS2012 prend en charge l'initialiseur de syntaxe de la liste, mais la VS2012 mise en œuvre de
std::map
ne le fait pas. Vous aurez à attendre pour obtenir de l'aide pour être ajouté.L'2012 CTP n'incluent un support pour l'initialisation uniforme.
OriginalL'auteur John Dibling
J'ai eu le même problème. Malheureusement support d'initialisation et de nombreux autres C++11 caractéristiques ne sont pas pris en charge jusqu'à VS2013.
preuve: http://msdn.microsoft.com/en-us/library/vstudio/bb386063(v=vs. 120).aspx
OriginalL'auteur tomi.lee.jones