J'ai std::vector
qui contient ma propre classe et je dois accéder à ses fonctions et les vides.C++ accédant vecteur
class A
{
private:
int var;
vector<string> vec;
public:
void setVar(int i) { var = i; }
void setVec(vector<string> a) { vec = a; }
};
J'ai aussi des fonctions de retour mais je n'ai pas pris la peine de les taper. Et j'ai inclus tous les fichiers nécessaires.
int main()
{
vector<A> vec;
for (int i = 0; i < 10; i++)
{
A tmp;
tmp.setVar(i);
vec.push_back(tmp);
}
for (int i = 0; i < 10; i++)
{
vector<string> tmp;
tmp.push_back("1");
tmp.push_back("2");
tmp.push_back("3");
vec.at(i).setVec(tmp); //Works sometimes or causes error std::out_of_range
vec[i].setVec(tmp); //Crashes the whole programm
}
}
Alors, comment puis-je configurer ces variables depuis le vector
est initialisé? J'utilise g ++ et ce n'est pas du vrai code parce que mon code actuel est en désordre.
Error for vec.at(i).setVec(tmp);
Error is: terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Ce code ne sera pas compilé pour moi. Etes-vous sûr que la configuration de 'tmp' est votre code actuel? Quand je corrige cela pour faire quelque chose de valable pour mettre en place 3 'string's dans le' vector', ce code fonctionne bien. –
Avec le code mis à jour, je ne vois aucune raison que cela devrait échouer. Est-ce que le code que vous avez écrit ici tombe en panne pour vous? –