réutilisation d'une meme instance d'une classe - C++ - Programmation
Marsh Posté le 16-08-2013 à 14:33:07
Salut,
l'opérateur new crée un objet en mémoire. (ligne 7) et te retourne un pointeur
le fait de l'ajouter à ton tableau (ligne 21) ne va pas créer un second objet qui serait une copie du premier.
Donc ligne 23 et 24 lorsque tu nettoies puis supprimes ton objet cc, ton tableau cc_tab1 contiendra un pointeur vers un objet détruit.
Je ne suis pas sûr que ça soit la source de ton erreur, mais il est certain que cela n'aide pas.
Supprime les lignes 23 et 24 !
Tel que, il n'est pas possible de réutiliser la meme instance de 'cc' si tu as pour tableau un vector de pointeur '.vector<ConnectedComponent*> cc_tab1 '
Si ton tableau était un vector d'objet ( 'vector<ConnectedComponent> cc_tab1' ), tu pourrais les ajouter par copie et donc là, oui, réutiliser la même instance. Tu n'aurais d'ailleurs même pas besoin de créer et de supprimer ton objet. 'cc' pourrait être une simple variable locale.
Pour ce qui est de ton erreur dans un vecteur, il y a plusieurs possibilités. Celle qui me saute aux yeux est la suivante :
Code :
|
Si marked[i] vaut false, il n'y a pas d'ajout à ton tableau interne cc->m_nodes. Donc cc->m_nodes et marked n'ont plus la même taille dès lors que cela se produit une fois.
A partir de là, à la prochaine itération où marked[i] vaudra 'true', ton expression 'cc->m_nodes[i]' va provoquer un plantage puisque m_nodes et marked n'ont plus leurs éléments alignés suivant le même index. On aura même cc->m_nodes.size() < i. D'où effectivement une possible exception dans un vector.
Remplace la ligne 17 par
Code :
|
Marsh Posté le 16-08-2013 à 15:02:38
@deidril :Merci beaucoup pour ta précieuse réponse
en faite j'ai résolue le problème en utilisant un code de type spaghetti je vais prendre ta réponse en considération.
je vais poster ma solution et espérant bien que vous me donnez votre point de vue :
Code :
|
Merci beaucoup
Bonne journée
Marsh Posté le 17-08-2013 à 08:33:19
si tu as besoin d'une queue, utilise std::queue qu lieu de faire nimp.
oh et Boost.Graph
Marsh Posté le 14-08-2013 à 19:27:57
Salut tout le monde !
j'aimerai bien faire une instance de ma classe connectedComponent cc , la utiliser dans une boucle , ajouter cette instance à un vecteur de type connectedComponent puis réutiliser cette même instance est ce que c'est faisable??? voici mon code :
ça marche pour le première itération mais se bloque pour les autres je sais pas où se trouve mon erreur , c'est pour ça j'ai réfléchi à supprimer l'instance après chaque utilisation , mon erreur est le suivant :
je serai très reconnaissante si vous pouvez m'aider
Merci énormément
---------------
when there is a will there is a way