Problème d'agrégation

Problème d'agrégation - C++ - Programmation

Marsh Posté le 02-03-2005 à 15:17:01    

Salut à tous.
 
Voilà mon problème : Quand j'appelle le constructeur de base de ma classe Cercle, qui appelle lui-même le constructeur de base de ma classe Point, bah en fait il appelle le constructeur par défaut, donc il met les coordonnées du point à 0 alors que celles du centre du cercle ne sont pas à 0, et je ne comprends pas pourquoi le constructeur par défaut est appelé  à la place du constructeur de base...
 

Citation :


Le cpp de la classe Cercle :
 
// Constructeur par défaut
CCercle::CCercle()
{
 m_x = m_y = m_couleur =0;
 m_rayon = 1;
 CPoint m_point;
}
 
// Constructeur de base
CCercle::CCercle(int x, int y, int rayon, int couleur)
{
 m_x = x;
 m_y = y;
 m_rayon = rayon;
 m_couleur = couleur;
 CPoint m_point(x,y);
}


Citation :


Le cpp de ma classe Point :
 
// Constructeur par défaut
CPoint::CPoint()
{
 m_x = m_y = 0;
}
 
// Constructeur de base
CPoint::CPoint(int x, int y)
{
 m_x = x;
 m_y = y;
}


Merci d'avance si vous pouvez m'aider.

Reply

Marsh Posté le 02-03-2005 à 15:17:01   

Reply

Marsh Posté le 02-03-2005 à 15:34:40    

Code :
  1. CPoint m_point(x,y);


 
la, tu instancies un objet CPoint. Celui-ci va d'ailleurs mourrir à la fin du constructeur.
Ce que tu veux faire, c'est appeler le constructeur de CPoint. Il faut donc utiliser une liste d'initialisation.
 

Reply

Marsh Posté le 02-03-2005 à 18:11:05    

Code :
  1. // Constructeur par défaut
  2. CCercle::CCercle()
  3. {
  4. m_couleur =0;
  5. m_rayon = 1;
  6. }
  7. // Constructeur de base
  8. CCercle::CCercle(int x, int y, int rayon, int couleur) : m_point(x,y),m_rayon(rayon),m_couleur(couleur)
  9. {}


Message édité par Joel F le 02-03-2005 à 18:11:32
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed