Solution de contournement pour erreur C2536: impossible de spécifier explicite de l'initialiseur de tableaux dans Visual Studio 2013
le code suivant ne compile pas avec Visual Studio 2013 alors qu'il devrait:
class A
{
A() :m_array{ 0, 1, 2 } {} //error C2536: 'A::A::m_array' : cannot specify explicit initializer for arrays
private:
int m_array[3];
};
Voir rapport de bug pour plus de détails.
Quelles sont les solutions possibles?
Ne initialisation au moment de la déclaration de travaux?
Ne
même erreur avec VC++ 2013.
Déclarer tableau comme
L'OP demande pour des solutions de contournement pour ce problème.
int m_array[3]{1,2,3};
?Ne
std::array
travail? (Vous aurez besoin de plus de croisillons, à moins que le compilateur a sauté le pistolet sur le C++14).même erreur avec VC++ 2013.
Déclarer tableau comme
std::array<int, 3> m_array;
et l'initialiser comme A() :m_array ({ 0, 1, 2 }) {}
. Ça fonctionne ou pas?L'OP demande pour des solutions de contournement pour ce problème.
OriginalL'auteur Korchkidu | 2013-11-09
Vous devez vous connecter pour publier un commentaire.
Que des commentaires, vous pouvez essayer cette solution de contournement.
Il semble VS2013 fait initialiseur-liste pour
std::array
constructeur bien et vous pouvez l'initialiser dans le constructeur de la intializer. Le code que vous avez écrit est valide et gcc et clang soutien. VS2013 manque.OriginalL'auteur deepmax