Partage
  • Partager sur Facebook
  • Partager sur Twitter

undefined reference to

    2 décembre 2018 à 20:49:04

    Erreur de compilation que je comprends pas voici mon code :

    classe montagne:

    #include "../svgfile.h"
    #include <random>
    #include "Triangle.h"
    #include <iostream>
    
    
    class montagne
    {
        public:
            montagne(std::mt19937& graine);
            virtual ~montagne();
            void dessiner(Svgfile& svgout, std::mt19937& graine);
    
        protected:
    
        private:
            Triangle m_montagne;
            Triangle m_ombre;
    };
    
    #endif // MONTAGNE_H
    

    classe montagne cpp.

    #include "montagne.h"
    #include <time.h>
    
    
    
    montagne::montagne(std::mt19937& graine)
    {
    
        double y1=rand()%(100-30)+30; //30
        double x2=rand()%(950-20)+20;//50
        double y2=440;
        double x3=x2+rand()%(300-200)+200;
        double y3=440;
        double x4=x2-140;
        double y4=440;
        double x1=(x2+x3-100)/2; //290
        // svgout.addTriangle(x1,y1,x2,y2,x3,y3,"darkgrey");
         //   svgout.addTriangle(x1,y1,x2,y2,x4,y4,"grey");
        m_montagne= Triangle(x1,y1,x2,y2,x3,y3,"darkgrey");
       m_ombre= Triangle(x1,y1,x2,y2,x4,y4,"grey");
    }
    
    montagne::~montagne()
    {
        //dtor
    }
    
    void montagne::dessiner(Svgfile& svgout, std::mt19937& graine)
    {
    
        m_montagne.dessiner(svgout);
        m_ombre.dessiner(svgout);
    
    
    
    /// Boucle FOR
    
      //  svgout.addTriangle(x1,y1,x2+81,y2-360,x3-88,y3-360,"white");
    
    }
    

    classe triangle:

    #ifndef TRIANGLE_H
    #define TRIANGLE_H
    
    #include "../svgfile.h"
    #include "../couleur.h"
    
    #include <iostream>
    
    class Triangle
    {
        private:
            double m_x1;
            double m_x2;
            double m_x3;
            double m_y1;
            double m_y3;
            double m_y2;
            std::string m_couleur;
        public:
            Triangle (double x1, double y1, double x2, double y2, double x3, double y3, std::string couleur);
            Triangle ();
            ~Triangle ();
            void dessiner(Svgfile& svgout);
    };
    
    #endif // TRIANGLE_H
    

    triangle cpp 

    #include "Triangle.h"
    
    
    Triangle::Triangle(double x1,double y1,double x2,double y2,double x3,double y3,std::string couleur)
    :m_x1(x1),m_y1(y1),m_x2(x2),m_y2(y2),m_x3(x3),m_y3(y3),m_couleur(couleur)
    {}
    
    Triangle::~Triangle()
    {
        //dtor
    }
    void Triangle::dessiner(Svgfile& svgout)
    {
        svgout.addTriangle(m_x1,m_y1,m_x2,m_y2,m_x3,m_y3,m_couleur);
    }
    

    l'erreur à lieu pour le constructeur de montagne.cpp ou il me met

    undefined reference to `Triangle::Triangle()'






    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2018 à 21:13:34

      Tu déclares le constructeur par défaut Triangle() à la ligne 21 de triangle.h et tu ne le définis pas dans triangle.cpp
      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2018 à 21:26:12

        en effet merci problème réglé



        • Partager sur Facebook
        • Partager sur Twitter

        undefined reference to

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown