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

Bibliothèques Discussion :

Pointeur intelligent boost : return NULL ->comment faire?


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Pointeur intelligent boost : return NULL ->comment faire?
    Bonjour à tous,

    Je commmence à utiliser les pointeurs intelligents boost, et j'aimerai savoir comment on fait pour faire un return NULL sur un objet de ce type...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef boost::shared_ptr<POINT> POINTPtr;
     
      POINTPtr get_data()
        {
          if( (!is_empty()) && (current) )
    	return(current->pt);
          else
    	return NULL;  // Ca ne marche pas !
        }
    Est-ce que je suis obligé d'utiliser le .reset() pour mettre à NULL un pointeur intelligent et le renvoyer par la suite? Par exemple, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return current->pt.reset();
    En fait, je ne sais pas vraiment comment faire, donc j'aimerai l'avis de quelqu'un qui s'y connait en pointeurs intelligents boost.

    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Je ne sais pas si je n'ai pas été assez clair, ou si personne ne connait les pointeurs intelligents boost...

    Si vous avez besoin d'éclaircissement sur ma question, dites-le moi, parceque j'ai vraiment du mal avec les pointeurs intelligents...

    Merci!

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le constructeur que tu souhaites utiliser est déclaré explicit, donc ceci devrait suffire :


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Si j'écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    POINTPtr get_data()
        {
          if( (!is_empty()) && (current) )
    	return(current->pt);
          else
    	return current->pt(NULL);
        }
    le compilateur me met l'erreur suivante :

    list.h: In member function `POINTPtr LIST::get_data()':
    list.h:285: error: no match for call to `(POINTPtr) (NULL)
    '
    Je n'ai pas l'impression qu'il applique le NULL au pointeur... Existe-t-il une documentation sur les pointeurs boost permettant de connaitre les différences de syntaxe avec les pointeurs "normaux"?

    Merci de votre aide.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Escusez-moi, je n'avais pas bien compris... Mais en faisant POINTPtr(NULL) comme recommandé par Loulou24 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    POINTPtr get_data()
        {
          if( (!is_empty()) && (current) )
    	return(current->pt);
          else
    	return POINTPtr(NULL);
        }
    J'ai toujours l'erreur suivante :

    list.h: In member function `POINTPtr LIST::get_data()':
    list.h:285: error: no matching function for call to `boost::shared_ptr<POINT>::shared_ptr(NULL)'
    Donc, ça ne doit pas etre la bonne syntaxe... Est-ce que quelqu'un a une idée? Merci d'avance.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup, ça a l'air de marcher!

    Est-il possible de vérifier si un pointeur intelligent est NULL en utilisant ==? Ou existe t'il une autre syntaxe?

    Merci!

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Oui tu peux comparer avec 0, ou utiliser l'opérateur "!", voire rien du tout:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/03/2007, 22h55
  2. int x = null (comment faire)
    Par v1nce dans le forum C#
    Réponses: 3
    Dernier message: 09/02/2007, 15h35
  3. Réponses: 7
    Dernier message: 24/03/2006, 10h51
  4. Comment faire un count de colonnes null
    Par claralavraie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2006, 14h13
  5. [Syntaxe] Un return dans un try... Comment faire ?
    Par chuky dans le forum Général Java
    Réponses: 13
    Dernier message: 14/01/2005, 10h33

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