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 :

scoped_ptr vs shared_ptr


Sujet :

Boost C++

  1. #21
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par yan Voir le message
    Salut.
    Y as t'il une réelle différence entre scoped_ptr et auto_ptr?
    Si j'ai bien compris scoped_ptr n'est pas copiable alors que auto_ptr oui(mais c'est un transfert de pointeur et non une copie)
    c'est ça , pour auto_ptr il y a un "release" de fait sur la source lors de la copie.

  2. #22
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Changer quoi ? Ton objectif... short* et int* ne sont pas compatible, il n'y a pas de raison qu'un xxx_ptr<short> ou un xxx_ptr<int> le soient...

    Un exemple qui marche (aux erreurs de frappe près) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class A{};
    class B : public A {};
     
    auto_ptr<B> ptrB(new B);
    auto_ptr<A> ptrA(ptrB);
    ok oui je pensais qu'une conversion implicite pouvait passer entre short et int. Si on définit deux classes X et Y avec un operateur de transtypage entre les deux types ça peut passer ? ( j'ai essayé mais sans succes , peut-être une erreur de syntaxe...), je pose ça par curiosité j'ai conscience que je n'aurais jamais à utiliser ça

  3. #23
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Pour répondre à la question initiale, je trouve que shared_ptr est très adapté dans la plupart des cas. Il a un comportement attendu et très sain, il n'y a pas de pièges.
    scoped_ptr n'est pas copiable, auto_ptr transfère la responsabilité. Il fait faire attention avec ces bêtes là !

    Personnellement, je n'utilise que shared_ptr (parfois en combinaison avec weak_ptr), même si une implémentation par comptage de référence n'est pas ce que j'attend dans 100% des cas. En cas d'évolution de cahier des charges, il se peut qu'on doive partager une ressource.
    Au passage, les pointeurs sous Python fonctionne avec un compteur (comme shared_ptr), c'est vraiment une solution "passe-partout" pour un surcout minime.

  4. #24
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par yan Voir le message
    Salut.
    Y as t'il une réelle différence entre scoped_ptr et auto_ptr?
    Si j'ai bien compris scoped_ptr n'est pas copiable alors que auto_ptr oui(mais c'est un transfert de pointeur et non une copie)
    Ce qui n'est pas mince comme différence et peut être à l'origine des problèmes d'utilisation de auto_ptr.

Discussions similaires

  1. shared_ptr Boost : prob affectation
    Par Bakura dans le forum Boost
    Réponses: 10
    Dernier message: 17/08/2006, 13h28
  2. [BOOST] shared_ptr et void*
    Par bourrik dans le forum Bibliothèques
    Réponses: 16
    Dernier message: 16/06/2006, 17h12
  3. boost::shared_ptr et singletons
    Par Elendil_BzH dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 15/01/2006, 20h45
  4. [BOOST] shared_ptr et pointer C
    Par zdra dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 08/05/2005, 14h15

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