Surdéfinition des opérateurs en c++

Résolu/Fermé
ibtissame_87 Messages postés 102 Date d'inscription lundi 6 août 2007 Statut Membre Dernière intervention 6 janvier 2010 - 25 mai 2008 à 01:27
 Mous - 6 févr. 2018 à 12:48
Bonjour,


svp est ce que vous pouvez me dire pk mon programme ne marche pas.
lors de la compilation je recois ce message

C:\Users\Ibtissame\Desktop\test24mai.cpp(180) : error C2512: 'Vecteur' : no appropriate default constructor available

//////////////////////////////surdefinition des operateurs/////////////////////////////////////

#include<iostream.h>
#include<conio.h>



//Classe vecteur
//Surdéfinition de l'opérateur +

class Vecteur
{
float x,y;
public : Vecteur(float, float);
void affiche();
Vecteur operator +(Vecteur); //surdefinition de l'operateur somme
//on passe un parametre Vecteur
//la fonction retourne un vecteur
};

Vecteur::Vecteur(float abs=0, float ord=0)
{

x=abs;
y=ord;
}

void Vecteur::affiche()
{
cout<<"x= "<<x<< " y= "<<y<<endl;}

Vecteur Vecteur::operator +(Vecteur v)
{ Vecteur res;
res.x=v.x+x;
res.y=v.y+y;
return res;
}

void main()
{
Vecteur a(2,6), b(4,8), c, d, e, f;
c=a+b;
c.affiche();
d=a.operator +(b);
d.affiche();
e=d.operator +(a);
e.affiche();
f=a+b+c;
f.affiche();
getch();
}

6 réponses

ibtissame_87 Messages postés 102 Date d'inscription lundi 6 août 2007 Statut Membre Dernière intervention 6 janvier 2010 11
23 juin 2008 à 21:51
ouuuuuuuuuuuuuuuuuuuuuuch ..... desolée l'erreur consistait bien dans le manque d'un constructeur par défaut et c'était plusque claire en plus .... il fallait juste que je lise l'erreur!!!!!!!
erci
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
25 mai 2008 à 01:34
Salut,

Apparemment, ton compilateur te demande un constructeur par défaut (c'est-à-dire un constructeur qui ne prend aucun paramètre...). Il doit en avoir besoin à la ligne 180, regarde donc par là-bas.
tuantu Messages postés 41 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 29 mai 2008 13
25 mai 2008 à 01:37
c bizarre, chez moi ça compile ... sauf que j'ai pas la libraire conio.h qui définit la fonction getch()

donc j'ai du virer l'include et la dernière ligne de code

il m'a aussi fait une erreur comme quoi main doit retourner un int

du coup j'ai changé le void main en int main et j'ai rajouté un return(0); à la fin


Ton problème a l'air de venir du fait qu'il trouve pas de constructeur par défaut (çàd sans paramètres)

or ton constructeur associe des valeurs par défaut aux paramètres, donc il pourrait être appelé sans paramètres et jouer le rôle de constructeur par défaut ...

Donc en gros, ça devrait marcher et c pour ça que ça marche chez moi j'imagine ...


Mais pour régler ton problème, j'pense que tu devrais simplement explicitement définir un constructeur par défaut


Vecteur::Vecteur()
{ x=0;y=0}
ibtissame_87 Messages postés 102 Date d'inscription lundi 6 août 2007 Statut Membre Dernière intervention 6 janvier 2010 11
23 juin 2008 à 14:25
il est inutile de définir un constructeur par défaut c deja fait au niveau du constructeur déclaré au dessus; n'est ce^pas?
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
23 juin 2008 à 15:36
salut,


c'est laquelle la ligne 180?

Mich
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le probleme est ici
Vecteur::Vecteur(float abs=0, float ord=0)
{

x=abs;
y=ord;
}
tu n'a qu'un seul constructeur par défaut ce lui initialise l'objet vecteur a la valeur (0,0)
ajout un autre constructeur
Vecteur::Vecteur(float abs, float ord)
{

this.x=abs;
this.y=ord;
}
le probleme est ici
Vecteur::Vecteur(float abs=0, float ord=0)
{

x=abs;
y=ord;
}
tu n'a qu'un seul constructeur par défaut ce lui initialise l'objet vecteur a la valeur (0,0)
ajout un autre constructeur
Vecteur::Vecteur(float abs, float ord)
{

this.x=abs;
this.y=ord;
}