Surdéfinition des opérateurs en c++
Résolu
ibtissame_87
Messages postés
102
Date d'inscription
Statut
Membre
Dernière intervention
-
Mous -
Mous -
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();
}
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();
}
A voir également:
- Surdéfinition des opérateurs en c++
- Quels sont les préfixes des opérateurs de téléphonie mobile en france - Guide
- Opérateurs france - Guide
- Controle des services de l'operateur ✓ - Forum Wiko
- Opera news en français - Télécharger - Navigateurs
- Mettre opera en francais - Forum Logiciels
6 réponses
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!!!!!!!
Mous
erci
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.
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.
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}
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}
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question