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

SL & STL C++ Discussion :

Utilisation d'un std::queue<void*>


Sujet :

SL & STL C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de gassi64
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Juin 2008
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par d�faut Utilisation d'un std::queue<void*>
    Bonjour, je suis un gros boulet, je ne sais pas utiliser un conteneur de la STL pour des structures de donn�es diff�rentes.
    Je souhaite pouvoir ajouter dans la file des int, string, char*, long, unsigned char*, ... bref un peu tout ce qui est types de base, mais aussi des tableaux de string aussi.
    En faisant le push d'un const char* la compilation m'a engueul�, et tout bonnement j'ai cast� en void*. Est ce une bonne m�thode et le contenu sera t'il correctement utilisable par la suite ?!

    On m'a aussi dit de faire ma classe pour g�rer les erreurs, mais la classe Queue est d�j� faite je ne vois pas en quoi ce serait utile...

    bref une question de premi�re ann�e j'ai honte

    merci !

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Hum si c'est des types de bases � la rigueur tu fais un queue d'union. Sinon une solution plus C++ serait de stocker des boost::variant. (si tu as un nombres fix�s de type � stocker sinon boost::any).

    Enfin, en g�n�ral �a rel�ve plus d'une erreur de conception d'avoir ce genre de besoin...

  3. #3
    Membre �clair� Avatar de gassi64
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Juin 2008
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par d�faut
    Je refactorise sans pouvoir changer le code incrimin�
    Le code envoi une succession de donn�es par ex int, string, int, int, float, char* en passant par des m�thodes d�di�es. J'aimerai r�cup�rer tout �a petit � petit dans une file � traiter � la fin pour voir ce qui a �t� donn�.
    Je pensais passer sinon par une classe abstraite AbstractParameter mis dans la file et avec chaque type diff�rent stock� dans des classes h�ritant de cette classe abstraite...Je vais voir ce que �a donne, �a para�t sympa mais je suis s�r que �a va clocher quelque part!

    Merci pour les explications sinon : j'ai juste pas suivi le truc de l'union (�a existe en C++ encore? ou alors �a correspond � ma classe abstraite)
    et Boost je crois que je ne peux pas l'installer mais je vais peut �tre me lancer l� dedans pour apprendre

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    268
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 268
    Par d�faut
    Salut,

    Si j'ai bien compris tu cherche un moyen d'avoir une fonction qui stocke dans la std::queue des �l�ments de types diff�rents?

    Si c'est ce que tu cherche regarde du c�t� des template. Un exemple d'une fonction qui peut stocker n'importe quel type de donn�es :

    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
     
    template <typename T> class Queue
    {
     
    public : /*.....*/  
           void stocke(const T& element);
     
    private:
           std::queue<T> _myQueue;
    };
     
    ////
     
    template<typename T>
    void
    stocke(const T& element)
    {
          _myQueue.push(element);
    }

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Citation Envoy� par atm0sfe4r Voir le message
    Salut,

    Si j'ai bien compris tu cherche un moyen d'avoir une fonction qui stocke dans la std::queue des �l�ments de types diff�rents?

    Si c'est ce que tu cherche regarde du c�t� des template. Un exemple d'une fonction qui peut stocker n'importe quel type de donn�es :

    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
     
    template <typename T> class Queue
    {
     
    public : /*.....*/  
           void stocke(const T& element);
     
    private:
           std::queue<T> _myQueue;
    };
     
    ////
     
    template<typename T>
    void
    stocke(const T& element)
    {
          _myQueue.push(element);
    }
    Il parle d'une collection h�t�rog�ne. Ce que tu donnes c'est une collection homog�ne

  6. #6
    Membre �clair� Avatar de gassi64
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Juin 2008
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par d�faut
    voil� c'est �a...car la std::queue donne d�j� une forme de pile sous forme template, je pense que je n'aurais pas eu � reimpl�menter une file.

    Merci quand m�me!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Nettoyer des std::queue en une fonction template
    Par gassi64 dans le forum SL & STL
    R�ponses: 16
    Dernier message: 23/07/2009, 15h05
  2. std::queue tr�s rapide !?
    Par rulianf dans le forum Langage
    R�ponses: 2
    Dernier message: 19/06/2009, 17h52
  3. Valeur innatendue avec std::queue::front()
    Par Krishna dans le forum SL & STL
    R�ponses: 3
    Dernier message: 29/12/2008, 14h37
  4. mutex ou ne pas mutex, doit-on prot�ger les std::queue
    Par bleuerouge dans le forum SL & STL
    R�ponses: 3
    Dernier message: 20/07/2008, 18h28

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