Surdéfinition des opérateurs en c++

Résolu
ibtissame_87 Messages postés 117 Statut Membre -  
 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();
}
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. ibtissame_87 Messages postés 117 Statut Membre 11
     
    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!!!!!!!
    3
    1. Mous
       
      erci
      0
  2. pyschopathe Messages postés 2053 Statut Membre 137
     
    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.
    0
  3. tuantu Messages postés 41 Statut Membre 13
     
    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}
    0
  4. ibtissame_87 Messages postés 117 Statut Membre 11
     
    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?
    0
    1. mich62120 Messages postés 636 Statut Membre 6
       
      salut,


      c'est laquelle la ligne 180?

      Mich
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ait-rabeh
     
    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;
    }
    0
  7. moha915
     
    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;
    }
    0