IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Utilisation de l'opérateur * avec shared_ptr<>


Sujet :

Boost C++

  1. #21
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Merci beaucoup pour tes réponses claires sur le sujet. En effet, je suis encore débutant, et j'ai toujours un peu de mal à assimiler certains concepts.

    Donc a priori, moralité, ne pas s'amuser avec des adresses lorsqu'on a des pointeurs intelligents. J'ai refait ma méthode Ajouter, toute simple, en utilisant la méthode Ajouter, qui est définie dans la classe mère de ListeTriee.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    template <typename INDICE, typename TYPE> 
    void ListeTriee<INDICE,TYPE>::Ajouter(INDICE Indice, boost::shared_ptr<TYPE> Element)
    {
    	boost::shared_ptr<INDICE> IndicePtr(new INDICE);
    	*IndicePtr = Indice;
    	Liste<TYPE>::Ajouter(Element,FIN);
    	Indices->Ajouter(IndicePtr, FIN);
    	int cpt = Taille-1;
    	while (cpt >= 0 && cpt < Taille)
    	{ // si l'indice n° cpt a une valeur supérieure à l'indice n° cpt+1
    	  if (*(Indices->GetIndice(cpt)) > *(Indices->GetIndice(cpt+1)) )
    	  { // Alors on échange les valeurs des indices et les valeurs des éléments correspondants.
    	     Indices->GetIndice(cpt).swap( Indices->TableauDeReference[cpt+1] );
    	     this->TableauDeReference[cpt].swap( this->TableauDeReference[cpt+1] );
    	  }
    	  else
    	  { // Si ce n'est pas le cas, c'est que le tri est fini ; on sort de la boucle.
    	     break;
    	  }
    	  // Puis c'est reparti pour un tour.
    	  --cpt;
    	}
    	// La taille de notre liste est donc bien égale à Taille+1 maintenant.
    	++Taille;
    }
    Et a priori, les lignes ci-dessous donnent un SIGABRT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boost::shared_ptr<INDICE> IndicePtr(new INDICE);
    	*IndicePtr = Indice;
    	Indices->Ajouter(IndicePtr, FIN);
    où Indices est un membre de ListeTriee de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::shared_ptr<Liste<INDICE> > Indices;
    Merci pour tous tes conseils, je vais encore retravailler la suite, celle qui contient les swaps ; si quelqu'un voit ce qui ne va pas dans cet enchaînement...

    Merci !

  2. #22
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Vu les petites incompréhensions, tu devrais sans doute commencer par un exemple que tu maîtrises bien plus simple.
    Le coup du boost::shared<> xxx(&Indice) est une horreur car le pointeur va effacer l'objet pointé, dans ce cas là, tu flingues tout...

Discussions similaires

  1. [11gR2] Utilisation de l'opérateur MINUS avec valeur à NULL
    Par lcaya dans le forum PL/SQL
    Réponses: 4
    Dernier message: 25/11/2014, 11h38
  2. [V6] Utilisation de l'opérateur Où avec agrégats ?
    Par jvaillant dans le forum Deski
    Réponses: 1
    Dernier message: 13/04/2010, 15h14
  3. [VxiR2] Utilisation de l'opérateur où avec une valeur = -1
    Par bastoonet dans le forum Deski
    Réponses: 4
    Dernier message: 29/04/2009, 22h36
  4. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37
  5. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo