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++

  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
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Tu as une liste de CNode et tu essaies d'y mettre des pointeurs vers des CNode.

  9. #9
    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.

  10. #10
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    Citation Envoy� par loufoque Voir le message
    Tu as une liste de CNode et tu essaies d'y mettre des pointeurs vers des CNode.
    +1.
    La liste a �t� cr��e pour contenir des CNodes. Sauf que tu ne lui donnes pas des CNodes, mais des pointeurs (long je crois). il y a donc incompatibilit� �vidente entre ces deux types, et le conteneur ne comprend pas ce que tu veux lui donner.

  11. #11
    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
    Si je comprends bien, j'ecrit de preference
    include<list.h> a la place de des using namespace.
    pourquoi un .h??????
    le seul probl�me que je signalais est le using namespace dans un .h qui est � proscrire.
    Du coup dans le .h tu utile ta list avec std:: devant.

  12. #12
    Membre �clair�
    Inscrit en
    Juin 2002
    Messages
    409
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par d�faut
    AAAAAAh OK, oui je comprends, c'est � proscrire dans le .h uniquement !
    Tres bien, merci � tous, ca fonctionne !

+ 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