bonjour,
je voudrais tester les conversions de type définies par l'utilisateur.
mais j'obtiens une erreur qui est du chinois pour moi.
explication: la fonction f attend un complexe, mais c'est un double qui lui est passé. il y a donc appel du constructeur à 1 argument (avec le deuxième par défaut), puis du constructeur de recopie (pour l'argument complexe passé en paramètre).
voici le programme (court):
complexe.h
complexe.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef _COMPLEXE_H #define _COMPLEXE_H class complexe { private: double x,y; public: complexe(double r=0,double i=0); complexe( complexe& orig); friend void fct (complexe i); };
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "complexe.h" complexe::complexe(double r=0, double i=0) { x=r; y=i; }; complexe::complexe(complexe& orig) { x=orig.x; y=orig.y; };
voici l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <stdlib.h> #include <iostream> #include "complexe.h" using namespace std; int main(int argc, char** argv) { void fct (complexe); fct(2.8); return (EXIT_SUCCESS); } void fct (complexe i){ cout << "exécution de fct avec " << i.x << i.y; }
olivier.complexe.cpp:10: error: default argument given for parameter 1 of `complexe::complexe(double, double)'
complexe.h:16: error: after previous specification in `complexe::complexe(double, double)'
complexe.cpp:10: error: default argument given for parameter 2 of `complexe::complexe(double, double)'
complexe.h:16: error: after previous specification in `complexe::complexe(double, double)'
Partager