Résultats de 1 à 9 sur 9

Sujet : c++ et pb de conteneurs

  1. #1
    salut,

    j\'apprends le c++ ave cle livre visual c++ de ivor horton.
    J\'ai un pb car lorsque je tape l\'exemple du livre il m\'affiche des erreurs lier au fonction de la liste.

    Et tout le code est identique au livre

    J\'ai l\'impression que soit il ne connait pas cette libraiires de fonctrions ou bien qu\'elle n\'est pas bien définie.

    Pour ceux qui ont le livre c\'est au chapitre 6 le premier code.

    merci de votre reponse

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 012
    Salut,
    problème avec les container de la STL ? pour cela il ne faut pas oublier d\'inclure les fichiers respectifs (comme opur les list: <list>, vector: <vector>, etc.) ensuite si tu ne veux pas ajouter le préfixe std:: à tous les membres du namespace std alors tu dois encore spécifié: using namespace std; en dessous de tes includes.

    enfin c\'est tout ce que je peux dire, si tu pouvais coller une ou deux erreurs, ça nous permettrait de mieux te comprendre

    ciao :wink:
    Grégory S.

    eVias Web & Software Solutions.

    Développement Web et logiciel en tout genre et Open Source.

    FOSDEM 2008. Venez -y nombreux !

  3. #3
    merci de la reponse

    voici le smessages d\'erreurs lors de la compilation

    Compiling...
    Elements.cpp
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2143: syntax error : missing \';\' before \'<\'
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2501: \'CList\' : missing storage-class or type specifiers
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2059: syntax error : \'<\'
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2238: unexpected token(s) preceding \';\'
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(135) : error C2065: \'m_PointList\' : undeclared identifier
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(135) : error C2228: left of \'.AddTail\' must have class/struct/union type
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(136) : error C2228: left of \'.AddTail\' must have class/struct/union type
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(147) : error C2228: left of \'.AddTail\' must have class/struct/union type
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(172) : error C2228: left of \'.GetHeadPosition\' must have class/struct/union type
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(176) : error C2228: left of \'.GetNext\' must have class/struct/union type
    E:\\C++\\Chapitre16\\Exemple\\Sketcher\\Elements.c pp(180) : error C2228: left of \'.GetNext\' must have class/struct/union type
    SketcherView.cpp
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2143: syntax error : missing \';\' before \'<\'
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2501: \'CList\' : missing storage-class or type specifiers
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2059: syntax error : \'<\'
    e:\\c++\\chapitre16\\exemple\\sketcher\\elements.h (82) : error C2238: unexpected token(s) preceding \';\'
    Generating Code...
    Error executing cl.exe.

    Sketcher.exe - 15 error(s), 0 warning(s)

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    Le mieux est que tu mettes aussi le code pour qu\'on puisse voir d\'ou vient l\'erreur.

    S\'il n\'est pas trop gros, tu peux tt mettre.
    S\'il est trop gros, Sélectionne les parties importantes. Avec si possible les numeros de lignes.
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

  5. #5
    voici le code dans les deux fichiers en erreurs.

    elements.cpp

    // Mise en oeuvre des classes d\'éléments
    #include \"stdafx.h\"

    #include <math.h>
    #include \"OurConstantes.h\"
    #include \"Elements.h\"

    // Construteur de la classe CLine
    CLine::CLine(const CPoint& Start, const CPoint& End, const COLORREF& Color,const int& PenWidth)
    {
    m_StartPoint = Start; // Définit la première extrémité de la ligne
    m_EndPoint = End; // Définit la seconde extrémité de la ligne
    m_Color = Color; // Définit la couleur de la ligne
    m_Pen = 1; // Définit l\'épaisseur de la plume

    // Définit le rectangle délimiteur
    m_EnclosingRect = CRect(Start, End);
    m_EnclosingRect.NormalizeRect();
    }

    // Dessine un objet CLine
    void CLine:raw(CDC* pDC) const
    {
    /* Crée une plume associée à cet objet et
    l\'initialise avec la couleur de l\'objet et l\'épaisseur du trait*/
    CPen aPen;
    if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
    {
    // Echec de la création de la plume. Abondon du programme
    AfxMessageBox(\"Echec du tracé d\'une ligne\", MB_OK);
    AfxAbort();
    }

    CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

    // Maintenant, dessine la ligne
    pDC->MoveTo(m_StartPoint);
    pDC->LineTo(m_EndPoint);

    pDC->SelectObject(pOldPen); // Restitue l\'ancienne plume
    }

    // Obtient le rectangle englobant d\'un élément
    CRect CElement::GetBoundRect() const
    {
    CRect BoundingRect; // Objet qui stocke le rectangle englobant
    BoundingRect = m_EnclosingRect; // Y place le rectangle délimiteur

    // Augmente le rectangle de l\'épaisseur de la plume
    int Offset = m_Pen == 0 ? 1 : m_Pen; // L\'épaisseur doit être au moins de 1
    BoundingRect.InflateRect(Offset, Offset);

    return BoundingRect; // Renvoie le rectangle englobant
    }

    // Constructeur de la classe CRectangle
    CRectangle::CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color,const int& PenWidth)
    {
    m_Color = Color; // Définit la couleur du rectangle
    m_Pen = PenWidth; // Définit lépaisseur de la plume

    // Définit le rectangle délimiteur
    m_EnclosingRect = CRect(Start, End);
    m_EnclosingRect.NormalizeRect();
    }

    // Dessine un objet CRectangle
    void CRectangle:raw(CDC* pDC) const
    {
    // Crée une plume associé à cet objet et l\'initialise avec la couleur de l\'objet et l\'épaisseur du trait
    CPen aPen;
    if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
    {
    // Echec de la création de la plume. Abondon du programme
    AfxMessageBox(\"Echec du tracé d\'un rectangle\", MB_OK);
    AfxAbort();
    }

    CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

    CBrush* pOldBrush = static_cast<CBrush*>(pDC->SelectStockObject(NULL_BRUSH)); // Sélectionne un pinceazu vide

    // Maintenant, dessine le rectangle
    pDC->Rectangle(m_EnclosingRect);

    pDC->SelectObject(pOldBrush); // Restitue l\'ancien pinceau
    pDC->SelectObject(pOldPen); // Restitue l\'ancienne plume

    }

    // Constructeur de la classe CCircle
    CCircle::CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth)
    {
    /* Calcule d\'abord le rayon
    Nous utilisons la virgule flottante car elle est requise par
    la fonction bibliothèque (dans math.h) calculant une racine carrée*/
    long Radius =
    static_cast<long>(sqrt(static_cast<double>((End.x-Start.x)*(End.x-Start.x)+
    (End.y-Start.y)*(End.y-Start.y))));

    // Calcule maintenant le rectangle délimiteur du cercle en mode tracé MM_TEXT
    m_EnclosingRect = CRect(Start.x - Radius, Start.y - Radius,
    Start.x + Radius, Start.y + Radius);

    m_Color = Color; // Définit la couleur du cercle
    m_Pen = PenWidth; // Définit l\'épaisseur de la plume
    }

    // Dessine un objet CCircle
    void CCircle:raw(CDC* pDC) const
    {
    // Crée une plume associé à cet objet et l\'initialise avec la couleur de l\'objet et l\'épaisseur du trait
    CPen aPen;
    if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
    {
    // Echec de la création de la plume. Abondon du programme
    AfxMessageBox(\"Echec du tracé d\'un rectangle\", MB_OK);
    AfxAbort();
    }

    CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

    CBrush* pOldBrush = static_cast<CBrush*>(pDC->SelectStockObject(NULL_BRUSH)); // Sélectionne un pinceazu vide

    // Maintenant, dessine le cercle
    pDC->Ellipse(m_EnclosingRect);

    pDC->SelectObject(pOldBrush); // Restitue l\'ancien pinceau
    pDC->SelectObject(pOldPen); // Restitue l\'ancienne plume
    }

    // Constructeur de la classe CCurve
    CCurve::CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color)
    {
    m_PointList.AddTail(FirstPoint); // Ajoute le 1er point dans la liste
    m_PointList.AddTail(SecondPoint); // Ajoute le 2nd point dans la liste
    m_Color = Color;
    m_Pen = 1;

    // Construit le rectangle délimiteur en mode MM_TEXT
    m_EnclosingRect = CRect(FirstPoint, SecondPoint);
    m_EnclosingRect.NormalizeRect();
    }

    void CCurve::AddSegment(const CPoint& Point)
    {
    m_PointList.AddTail(Point); // Ajoute le point à la fin

    // Modifie le rectangle délimiteur du nouveau point
    m_EnclosingRect = CRect(min(Point.x, m_EnclosingRect.left),
    min(Point.y, m_EnclosingRect.top),
    max(Point.x, m_EnclosingRect.right),
    max(Point.y, m_EnclosingRect.bottom));
    }

    // Dessine un objet CCurve
    void CCurve:raw(CDC* pDC) const
    {
    // Crée une plume associée à cet objet et
    // l\'initialise avec la couleur de l\'objet et l\'épaisseur du trait d\'1 pixel
    CPen aPen;
    if (!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
    {
    // Echec de création de la plume. Fermeture du programme.
    AfxMessageBox(\"Echec de la création de la plume au cours du tracé d\'une courbe\", MB_OK);
    AfxAbort();
    }
    CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

    // Tarce la courbe maintenant
    // Obtient la position dans la liste du premier élément
    POSITION aPosition = m_PointList.GetHeadPosition();

    // Si elle est correcte, se déplace vers ce point
    if(aPosition)
    pDC->MoveTo(m_PointList.GetNext(aPosition));

    // Trace un segment pour chacun des points suivants
    while(aPosition)
    pDC->LineTo(m_PointList.GetNext(aPosition));

    pDC->SelectObject(pOldPen); // Restitue l\'ancienne plume
    }


    fichier elements.h

    #if !defined(Elements_h)
    #define Elements_h

    // Classe d\'éléments générique
    class CElement : public CObject
    {
    protected:
    COLORREF m_Color; // Couleur d\'un élément
    CRect m_EnclosingRect; // Rectangle englobant un élément
    int m_Pen; // Epaisseur de la plume

    public:
    virtual ~CElement(){} // Destructeur virtuel

    // Opération de dessin virtuelle
    virtual void Draw(CDC* pDC) const {} // Opération de dessin virtuelle
    CRect GetBoundRect() const; // Obtient le rectangle englobant d\'un élément

    protected:
    CElement(){} //Constructeur par défaut
    };

    // Classe définissant un objet ligne
    class CLine : public CElement
    {
    public:
    virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne

    // Constructeur pour un objet ligne
    CLine(const CPoint& Start, const CPoint& End, const COLORREF& Color,
    const int& PenWidth);

    protected:
    CPoint m_StartPoint; // Première extrémité de la ligne
    CPoint m_EndPoint; // Seconde extrémité de la ligne

    CLine(){} // Constructeur par défaut - à ne pas utiliser
    };

    // Classe définissant un objet rectangle
    class CRectangle : public CElement
    {
    public:
    virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne

    // Constructeur pour un objet rectangle
    CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color,
    const int& PenWidth);

    protected:
    CRectangle(){} // Constructeur par défaut - à ne pas utiliser

    };

    // Classe définissant un objet cercle
    class CCircle : public CElement
    {
    public:
    virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne

    // Constructeur pour un objet cercle
    CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color,
    const int& PenWidth);

    protected:
    CCircle(){} // Constructeur par défaut - à ne pas utiliser
    };

    // Classe définissant un objet courbe
    class CCurve : public CElement
    {
    public:
    virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne

    // Constructeur pour un objet courbe
    CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color);

    void AddSegment(const CPoint& Point); // Ajoute un segment à la courbe

    protected:
    // Inserer les membres données CCurve ici
    CList<CPoint, const CPoint&> m_PointList; // Liste de points Type safe

    CCurve(){} // Constructeur par défaut - à ne pas utiliser
    };


    #endif // !Defined(Elements_h)

    et merci encore de m\'aider

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517

    c++ et pb de conteneurs

    J\'ai laché l\'affaire au niveau du constructeur du ectangle.
    C\'est assez long qd mm ce truc.

    Essaie de nous donner juste les lignes ou sont les erreurs, la ligne 82 du .h et 135,136,... du .cpp
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

  7. #7
    voici juste les lignes ou sont les erreurs

    ce sont les lignes qui font refrences au conteneurs.

    .h

    CList<CPoint, const CPoint&> m_PointList; // Liste de points Type safe


    .cpp
    m_PointList.AddTail(FirstPoint); // Ajoute le 1er point dans la liste
    m_PointList.AddTail(SecondPoint); // Ajoute le 2nd point dans la liste

    m_PointList.AddTail(Point); // Ajoute le point à la fin

    POSITION aPosition = m_PointList.GetHeadPosition();

    pDC->MoveTo(m_PointList.GetNext(aPosition));




    pDC->LineTo(m_PointList.GetNext(aPosition))



    sinon je peux ziper le programmer et l\'envoyer


    j\'ai l\'impression que les conteneurs ne sont pas bien definie.

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    Déjà, tous tes problèmes viennent d\'une seule erreur qui induit les autres.

    C\'est
    CList<CPoint, const CPoint&> m_PointList;
    Il te dit
    chapitre16\\exemple\\sketcher\\elements.h(82) : error C2143: syntax error : missing \';\' before \'<\'
    Ce qui signifie qu\'il manque un ; avant le <, essaie déjà ca.

    Sinon as-tu bien fait comme a dit dmXx ?
    Essaie aussi de spécifier le truc:: devant le
    <CPoint, const CPoint&>

    Ou bien regardes à un autre endroit une spécification du même type qui soit correcte.

    N\'utilisant pas les templates, je ne peux pas plus t\'aider, désolé, mais si tu ne trouves pas tu peux toujours poser des questions.
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    1 012
    Non pas faire come j\'ai dit, moi je parlais des container de la STL et CList n\'en fait pas partie :s: alors je sais pas trop aidr non plus mais je vais tout même essayer:

    CList<CPoint, const CPoint&> m_PointList;
    s\'il te dit qu\'il manque un \';\' devant le \'<\', c\'est qu\'il doit en faite en manquer un au dessus de cela. Envoi nous la ligne de code se trouvant au dessus de celle-ci, peut être que l\'erreur se trouve là!

    et en effet totues les autres erreurs viennent de cette déclaration. Peut être la class CList n\'est pas trouvée et tu dois inclure un fichier non inclus! Ou bien il ce peut que cela viennent de CPoint aussi mais cela métonnerait vu que c\'est une class déclarée toi même.

    en attente de réponse

    ciao :wink:
    Grégory S.

    eVias Web & Software Solutions.

    Développement Web et logiciel en tout genre et Open Source.

    FOSDEM 2008. Venez -y nombreux !

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!