Manipulation de QVector [Qt] - C++ - Programmation
Marsh Posté le 18-02-2010 à 11:19:09
En bidouillant j'ai finis par trouver une solution :
Implémenter une méthode addVect(int) dans la classe B qui va appeler la méthode addVect(int) de la classe A sur l'objet aB.
J'ai eu l'idée en écrivant le sujet ^^"
Marsh Posté le 18-02-2010 à 11:41:48
Tu peux aussi renvoyer des références, au lieu de renvoyer des copies :
Dans A : QVector<int>& getVect();
Dans B : A& getaB();
Marsh Posté le 18-02-2010 à 14:42:31
quel est l'avantage et l'inconvénient de l'un par rapport à l'autre ?
Marsh Posté le 18-02-2010 à 15:19:17
Tu peux modifier l'objet qui t'es retourné, c'est-à-dire que le main que tu as posté plus haut aurait le comportement que tu voulais.
Marsh Posté le 18-02-2010 à 10:47:32
Premièrement Bonjour ,
Mon problème d'aujourd'hui est le suivant :
J'ai une classe A dans la quelle j'ai un QVector d'entier en private,
ainsi qu'une méthode qui retourne ce vector,
une autre qui permet d'insérer une valeur à la fin du vector.
Ces deux méthodes sont déclaré en public toujours dans ma classe A.
Lorsque dans mon main je crée un objet a de la classe A et que j'utilise les deux méthodes sus-nommé mon vector voit ça taille varier de manière "définitive".
Le problème est lorsque je crée un objet, a, de la classe A, en private, dans une classe B qui possède une méthode retournant l'objet a et que dans mon main je crée un objet, b, de la classe B et que je souhaite modifier insérer une nouvelle valeur à l'objet a ça fonctionne uniquement le temps de la méthode d'insertion, car à la sortie de cette méthode il appel les destructeur et remets le vector contenue dans l'objet a à la taille qu'il avait à la sortie du constructeurs de b.
J'essaye de comprendre pourquoi depuis hier et je ne vois pas le pourquoi ni une solution possible c'est pour quoi je me tourne vers vous.
Ne sachant si mes explications sont clairs voici le code :
A.cpp
B.cpp
main.cpp
Voici la sortie :
Test avec A directement :
1
2
--------------------------------------------
Test avec B :
taille avant l'appel de B::geta()::manipQcect::addvect() : 1
1