Héritage et constructeurs
bonjour,
un problème que je n'arrive pas à solutionner.
Soit une classe FigureGeometrique mère d'une classe Segment utilisant toutes les deux une classe Point:
Code:
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
|
class FigureGeometrique
{
private:
protected:
Point org;
public:
FigureGeometrique(Point);
Point get_org() const {return org;}
virtual void dessiner();
};
class Segment:public FigureGeometrique
{
Point org, ext;
public:
Segment(Point, Point);
void dessiner();
};
class Point
{
private:
int x, y;
public:
Point();
Point(int, int);
Point(const Point&);
int get_x() const {return x;};
int get_y() const {return y;};
}; |
Le constructeur de la classe Segment est le suivant:
Code:
1 2 3 4
|
Segment::Segment(Point o, Point e):FigureGeometrique(o), ext(e)
{
} |
Quand j'instancie un objet de la classe Segment et que je compile, j'ai l'erreur:
segment.o: dans la fonction « Segment::Segment(Point, Point) »:
segment.cpp:(.text+0x3d): référence indéfinie vers « Point::Point() »
Le compilateur recherche un constructeur de Point sans argument pour construire l'attribut ext à partir du paramètre e (si j'ai bien suivi le cours) mais je ne comprend pas le pourquoi du mécanisme. Je pensais n'utiliser que le constructeur par défaut de Point.
J'ai implémenté un constructeur par recopie et je vois que j'y passe bien.
Une explication?
Merci.