fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 3 sept. 2008 à 15:01
Je ne suis pas un bête en C++ mais c'est explicite, tu n'as pas de constructeur par défaut.
Je pense que tu dois passer en paramètre des pointeurs.
Tes appels instancient la classe 'point' et vu que tu n'as pas de constructeur par défaut ça plante.
Je pense que si tu fais :
int main(void)
{
point pt;
return 0;
}
tu as la même erreur. Ca vient pas du constructeur de ligne.
Et je pense que Visual c++ te ferait la meme erreur.
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 3 sept. 2008 à 16:20
Oui en effet, là je pense que je n'ai pas de réponse, il faut qu'un expérienté en la matière réponde, il doit y avoir une subtilité avec les constructeurs.
theneoiceman
Messages postés78Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 avril 2010 12 sept. 2008 à 14:06
Je pense que ton problème réside dans le fait que je suppose que ta classe "ligne" possède 2 variables membres pour représenter ses 2 coordonnées, du genre ca :
class ligne{
point m_p1;
point m_p2;
public :
ligne (point p1, point p2); //constructeur
void set (point p1, point p2); //méthode d'initialisation
....
};
Evidemment lors de l'appel à ton constructeur ligne::ligne(point p1, point p2) qui construit une instance de ta classe "ligne", les variables membres de l'instance sont elles aussi créées, donc m_p1 et m_p2 sont construites avec leur constructeur par défaut point() qui, dans ton cas , n'existe pas puisque tu as défini ton propre constructeur de "point".
L'ajout du constructeur point() sans paramètres dans ta classe "point" a permis de régler le problème, voila l'explication ^^