class TrackSymbol
{
protected: static std::map<int, std::vector<char> > _trackTypeToIdentificationCodeMap ;
protected: static char _identificationCodeChars[][2] ;
} ;
Dans le fichier de mise en œuvre:Frapper un segfault lors de la copie vecteur local à la valeur d'une certaine clé sur la carte
std::map<int, std::vector<char> > TrackSymbol::_trackTypeToIdentificationCodeMap ;
char TrackSymbol::_identificationCodeChars[][2] =
{
{ ' ', ' ' },
{ 'S', '6' },
{ 'Z', 'U' }
} ;
Dans le constructeur, je tente de remplir un vecteur local avec des valeurs appropriées de _identificationCodeChars, mais frapper une erreur de segmentation dans la copie:
for (int i = 0 ; i < sizeof(_identificationCodeChars)/sizeof(_identificationCodeChars[0]) ; i++)
{
std::vector<char> vec ;
vec.push_back(_identificationCodeChars[i][0]) ;
vec.push_back(_identificationCodeChars[i][1]) ;
_trackTypeToIdentificationCodeMap[i] = vec ; //Segfault here
}
Je crois comprendre que l'opérateur d'affectation fera une copie papier du vecteur local, donc je suis un peu confus sur pourquoi il est Hitt l'erreur de segmentation. En outre, avec mon environnement actuel, je suis limité à C98, donc je ne peux pas utiliser des choses comme des listes d'initialisation étendues, etc.
S'il vous plaît éditez votre question pour qu'elle contienne [mcve] – Slava