Salut tous,

J'essaye de créer une classe simple avec comme attribut un objet d'une autre classe, mon problème est le constructeur :

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
class uneDate
{
    private :
    int sonJour, sonMois, sonAnnee;
 
    public:
    uneDate(int,int,int);
    uneDate(const uneDate &);
    void afficheToi();
    void setDate(int, int, int);
    int getJour();
    int getMois();
    int getAnnee();
};
 
uneDate :: uneDate(int j, int m, int a)
{
    sonJour = j;
    sonMois = m;
    sonAnnee = a;
}
 
uneDate :: uneDate(const uneDate & D)
{
    sonJour = D.sonJour;
    sonMois = D.sonMois;
    sonAnnee = D.sonAnnee;
}
 
void uneDate :: afficheToi()
{
    cout<<sonJour<<"/"<<sonMois<<"/"<<sonAnnee<<endl;
}
 
void uneDate :: setDate(int j, int m, int a)
{
    sonJour = j;
    sonMois = m;
    sonAnnee = a;
}
 
int uneDate :: getJour(){return sonJour;}
int uneDate :: getMois(){return sonMois;}
int uneDate :: getAnnee(){return sonAnnee;}
 
class unEvenement
{
    private :
    uneDate saDate;
    char * intitule;
 
    public:
    unEvenement(uneDate , char * intitule);
    void afficheToi();
};
 
unEvenement :: unEvenement(uneDate  D, char * intit)
{
    saDate.setDate(D.getJour(), D.getMois(), D.getAnnee());
    strcpy(intitule, intit);
}
 
void unEvenement :: afficheToi()
{
    saDate.afficheToi();
    cout<<intitule<<endl;
}
Donc pour construire un objet unEvenement, il faut bien transmettre par valeur uneDate D, pour cela j'ai prévu un constructeur par recopie...Vainement semble-t-il, le compilateur me renvoie une erreur :
no matching function for call to 'uneDate :: uneDate()'
Un constructeur par défaut, qu'est-ce qu'il va en faire ? Franchement... Mon compilateur est-il drogué ?