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 :

[List] Comment utiliser list avec codeblocks


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut [List] Comment utiliser list avec codeblocks
    Bonjour,
    Je démarre un nouveau projet et j'ai décidé de le faire en C++. J'en ai pas fais depuis 10 ans, donc ça a evolué.
    Notamment, je découvre les templates, la librairie STL et plus particulièrement ce qui m'interresse la class LIST

    J'utilise CodeBlocks, et mon souci est que je n'arrive pas à utiliser LIST.
    extrait de mon code :
    entete :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #ifndef STUDYSYSTEM_H_INCLUDED
    #define STUDYSYSTEM_H_INCLUDED
    #include <C:\Data\Dev\Processor\Include\Galerie.h>
    //#include <stdexcept>    //required for defining and catching standard exceptions
    #include <List>
     
    using namespace std;
     
    enum SolveSystem
    {
        SS_Simple = 1,
        SS_Hardy_Cross =2
    };
     
    typedef list<CNode> TNodesList;
    typedef list<CSection> TSectionsList;
    typedef list<CLine> TLinesList;
     
    class CStudySytem
    {
        public:
            TNodesList NodesList;
            TSectionsList SectionsList;
            TLinesList LineList;
     
            CStudySytem();
            virtual ~CStudySytem();
            void AddANode(PNode N);
        protected:
        private:
     
    };
     
    #endif // SYSTEM_H_INCLUDED
    source :
    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
    26
    27
    28
    29
    30
    31
    #include <C:\Data\Dev\Processor\Include\StudySystem.h>
    #include<List>
     
    using namespace std;
     
    /** @brief CStudySytem
      *
      * @todo: document this function
      */
     CStudySytem::CStudySytem()
    {
     
    }
     
    /** @brief ~CStudySytem
      *
      * @todo: document this function
      */
     CStudySytem::~CStudySytem()
    {
     
    }
     
    /** @brief Add a new node to the system
      *
      * @todo: document this function
      */
    void CStudySytem::AddANode(PNode N)
    {
        NodesList.push_back(N);
    }
    la completion de code pour "NodesList." me propose que ERASE et INSERT ... ?
    Avec mon pus_back(N) j'ai le message d'erreur :
    C:\Data\Dev\Processor\Include\StudySystem.cpp|30|error: no matching function for call to `std::list<CNode, std::allocator<CNode> >::push_back(CNode*&)'|
    Tous les tuto, les faq que je trouve montre des exemples simple avec des methodes push_back, push_front, reverse, ... ELLES SONT OU ?

    J'ai lu ici que la STL n'etait pas integree avec CodeBlocks. OK. Je l'ai telechargé sur http://jlecomte.ifrance.com/c++/c++-...raries-fr.html J'ai consulté le code et c'est bizarre je trouve des methodes _push_back_aux ... qui demande un autre parametre ...
    bref je n'y comprends rien !
    Est ce que qqun pourrait éclairer ma lanterne ?
    Merci d'avance.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    C'est quoi PNode ? Tu déclare une liste de pommes (CNode) mais tu y met des oranges (PNode), normal que le compilateur râle

    Sinon je ne connait pas CodeBlocks mais ça m'étonnerais qu'il n'intègre pas la STL, elle est normalement fourni avec tout compilateur C++ car elle fait partie du langage.

    Pour la documentation il ne faut pas aller voir les sources mais une vraie documentation comme par exemple celle de Dinkumware.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sylvain Togni Voir le message
    Sinon je ne connait pas CodeBlocks mais ça m'étonnerais qu'il n'intègre pas la STL, elle est normalement fourni avec tout compilateur C++ car elle fait partie du langage.
    C::B n'est qu'une ide qui peut utiliser différent compilateur (visual, mingw, gcc, intel,...).

    Par contre une chose à virer tout de suite su .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace std;

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Merci Sylvain pour ta réponse rapide.

    CNode est une classe, et PNode un pointeur sur cette classe :
    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
    typedef double TCoord;  // le type long double est laisse de cote pour soucis de compatibilite actuellement.
     
    class CNode // Noeud
    {
        public:
            unsigned int m_Index; // Indice du noeud
            TCoord m_X;
            TCoord m_Y;
            TCoord m_Z;
     
            CNode(TCoord X, TCoord Y, TCoord Z);
            virtual ~CNode();
            std::string CoordinateToString();
            bool EqualNode(CNode *N2);
        protected:
        private:
    };
    typedef CNode *PNode;
    Et en fait j'avais prévu d'écrire :
    NodesList.push_back(&N);
    Mais je viens d'essayer, effectivement ca marche ! Alors comment faire pour passer seulement un pointeur en parametre ?

    Ca veut dire que la completion auto ne fonctionne pas ?

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    @ Mongaulois : merci pour ta reponse.
    Pourquoi virer
    using namespace std;
    je comprends pas ce que tu veux dire avec :
    tout de suite su .h

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par kase74 Voir le message
    @ Mongaulois : merci pour ta reponse.
    Pourquoi virer
    par ce que ça créé des problème plus tard
    http://cpp.developpez.com/faq/cpp/?p...PACE_using_std

    Citation Envoyé par kase74 Voir le message
    je comprends pas ce que tu veux dire avec :
    su = du, j'ai fait une faute de frappe

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Si je comprends bien, j'ecrit de preference
    include<list.h> a la place de des using namespace.

    mais en faisant ca, j'ai un warning :
    Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
    que faut il faire ?

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Si je me rappelle bien CodeBlocks est juste un IDE et utilise un compilo existant, qui lui sans aucun doute possède une version de la STL.

    Ton code est-il un mauvais copié/collé ? car #include <List> avec un 'L' majuscule me paraît étrange.

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

Discussions similaires

  1. [Débutant] Comment utiliser List dans mon code
    Par solaar dans le forum C#
    Réponses: 2
    Dernier message: 02/04/2013, 13h07
  2. Comment utiliser Word avec Delphi 7 ?
    Par muquet dans le forum Débuter
    Réponses: 9
    Dernier message: 06/12/2005, 18h52
  3. Comment utiliser ShellExecute avec un programme DOS ?
    Par RC10GT_MGT dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 22/09/2005, 14h23
  4. Comment utiliser AddItem avec un TComboBox ?
    Par richard038 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 01/08/2005, 17h58
  5. Réponses: 12
    Dernier message: 02/02/2004, 13h41

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