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
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);
 
 
};
complexe.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;
};
main.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
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;
}
voici l'erreur:
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)'
olivier.