Redimentionner une instance dynamique d'une classe
Bonjour,
Mon problème se pose car je ne peux pas utiliser les "vector" puisqu'il s'agit d'un exercice scolaire.
La faq dit à ce sujet
"Pour agrandir une zone (généralement un tableau) allouée via l'opérateur new il faudra faire la manipulation à la main :
- Allouer un nouvel espace mémoire de la taille souhaitée
- Y copier son contenu
- Libérer l'ancien espace mémoire ".
En tentant cette approche "bête et méchante", je me bute à un autre problème car je souhaite que ma nouvelle instance ait le même nom : la portée des variables.
Voilà ce que je tente de faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| maClass * pointeurSurInstance
while(cin>>item){
if(monInstance.monTableau.estRempli()){
maClass nouvelleInstance(de taille plus grande); //alloue un nouvelle espace plus grand
recopier(pointeurSurInstance, nouvelleInstance);//copie le contenu
pointeurSurInstance = &nouvelleInstance;
} *1*
//...
//agit sur l'instance pointée par pointeurSurInstance en fonction de cin
//...
} |
Bon, j'imagine que vous voyez le problème, au niveau de *1* nouvelleInstance est libérée grâce au destructeur de classe donc pointeurSurInstance ne pointe sur rien.
Je n'ai aucune idée de la manière de faire pour résoudre le problème.
D'avance merci.