J'ai une classe avec un vecteur privé de doubles. Pour accéder ou modifier ces valeurs, tout d'abord je des méthodes telles quepush_back vecteurs privés avec 2 méthodes, on ne travaille pas
void classA::pushVector(double i)
{
this->vector.push_back(i);
}
double classA::getVector(int i)
{
return vector[i];
}
Cela a fonctionné pendant un certain temps jusqu'à ce que je trouve que je dois surcharger beaucoup d'opérateurs pour ce que je avais besoin, j'ai donc essayé de le changer pour obtenir et définir le vecteur directement au lieu des valeurs, à savoir
void classA::setVector(vector<double> vector)
{
this->vector = vector;
}
vector<double> classA::getVector()
{
return vector;
}
maintenant, dire qu'il ya un ClassB, qui a un élément de CLASSA privé, qui a également méthodes get et set pour lire et écrire. Le problème était quand j'ai essayé de repousser une valeur au vecteur final dans la classe A.
void classB::setFirstValue(double first)
{
this->getClassA().getVector().push_back(first);
}
Cela ne fait absolument rien au vecteur. Il reste inchangé et je n'arrive pas à comprendre pourquoi ... Des idées?
Bien que ce soit la raison du comportement de l'OP, il ne faut pas passer des références non-const aux données internes. jmclem, vous devriez envisager à quel point l'accès aux données que vous stockez dans vos utilisateurs vectoriels de la classe A a vraiment besoin et implémenter les fonctions nécessaires en tant que membres de la classe A directement. – haffax
a parfaitement fonctionné, merci. Comme haffax a dit, les consts ont dû être enlevés. Je verrai quoi faire à ce sujet. Peut-être que les éléments n'ont pas besoin d'être privés, mais j'essayais de former une «bonne» structure. Peut-être que ce n'est pas la meilleure façon de le faire. Merci pour votre aide! – jmclem