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:
Le constructeur de la classe Segment est le suivant:
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 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;}; };
Quand j'instancie un objet de la classe Segment et que je compile, j'ai l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Segment::Segment(Point o, Point e):FigureGeometrique(o), ext(e) { }
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.segment.o: dans la fonction « Segment::Segment(Point, Point) »: segment.cpp:(.text+0x3d): référence indéfinie vers « Point::Point() »
J'ai implémenté un constructeur par recopie et je vois que j'y passe bien.
Une explication?
Merci.
Partager