J'enanoutered un problème avec un code similaire à ceconteneurs STL ne parvient pas à ajouter une structure définie dans une fonction
void aFuncion()
{
struct entry
{
std::string field1;
int field2;
int field3;
entry(const entry& ent)
{
// copy constructor code
}
entry()
{
// default constructor code
}
entry(std::string s, int a, int b)
{
field1 = s;
field2 = a;
field3 = b;
}
}; //end of structure definition
std::vector<entry> vec;
entry en("a string", 1, 2);
vec.push_back(en); // vec has garbage in index 0
}
après avoir poussé l'entrée dans le vecteur débogueurs ne montre que les ordures dans le premier vecteur d'entrée.
le problème a été résolu une fois que nous avons retiré la définition de structure de la fonction.
Pourquoi le problème est-il survenu lors de la résolution de la définition de la fonction?
(nous travaillons avec VS 2008 sur XP 32 bits)
L'indice de l'entrée serait 0, pas 1. –
@Neil grassette: vous avez raison bien sûr, je l'ai corrigé la remarque – Tom
std :: vecteur ne dispose pas d'une fonction push(). Vous voulez probablement dire push_back(). Aussi, s'il vous plaît supprimer l'entrée: avant de vous. –