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

 C++ Discussion :

Gerer une liste "Boite a lettre" qui peut être vide


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut Gerer une liste "Boite a lettre" qui peut être vide
    Bonjour,

    J'aimerai savoir qu'elle est la méthode "propre" pour gérer une liste de message. Je m'explique.

    J'ai une classe "Message" qui représente un message unitaire.

    J'ai une classe "BoiteALettre", qui contient une std::list<Message>, une méthode pushMessage et une methode popMessage (Je simplifie, le projet est plus complexe)

    Et j'ai mon thread "main", qui va aller lire toutes les secondes si un message a été posté.
    Venant du monde php, ce qui me serait naturel, c'est que la methode popMessage retourne le dernier message s'il y en a, et null s'il n'y en a pas. Or, si elle retourne un message, elle ne peut pas retourner null.

    Donc je me demande qu'elle est la meilleure méthode pour gérer ça :
    - Solution 1) une première methode "hasMessage" qui va d'abord vérifier s'il y a un message (solution éliminée, j'ai besoin d'être thread safe et ça va me poser des problèmes d'avoir plusieurs méthodes)

    - Solution 2) ma liste ne stocke pas des "Message" mais des "*Message", du coup, je peux retourner NULL, mais le risque de fuite de mémoire, et autre bizarerie mémorielle me fait un peu peur (C'est pour l'instant la solution retenue)

    - Solution 3) J'ai entendu parler d'Event, mais je n'y connais rien.

    - Solution 4 ) Mon objet Message contient un champ "EstVide", qui me précise si mon objet est à traiter ou pas quand je le récupère. Ca marche, mais je trouve ça porc.

    - Solution 5 ) ?

    Merci d'avance !

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Tu peux sereinement envisager de retourner un pointeur, sachant que delete(null); est sans risque aucun (sans effet).

    Il y a beaucoup mieux: le unique_ptr<Message>, que tu trouveras dans boost (ou std:: si tu disposes de C++11)

    unique_ptr<> est une classe qui garantit que la mémoire sera libérée au bon moment.
    C'est ce qu'on appelle un "smart pointer".

  3. #3
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Je n'ai pas accés à Boost, mais je vais aller jeter un oeil du côté de "unique_ptr", que je ne connaissais pas.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    La fonctionnalité se code relativement facilement, si tu supprimes quelques fonctionnalités.

    Bon courage

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/04/2014, 13h16
  2. [XL-2003] Comment documenter un DTPickers avec le contenu d'une cellule qui peut être vide.
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2010, 00h54
  3. comment gerer une liste d'exemple
    Par Fox213 dans le forum Bibliographies - Index - Glossaires
    Réponses: 0
    Dernier message: 14/01/2008, 18h53
  4. gerer une liste de fenetre via un JMenu
    Par lilou77 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 05/02/2007, 11h40
  5. gerer une liste de selection multiple
    Par lapinours dans le forum Access
    Réponses: 5
    Dernier message: 10/04/2006, 12h21

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