Bonjour,
je travail sur un exercice de c++ où je dois redéfinir l'opérateur "=" pour une classe "set_int" définit ci-dessous. Sauf que le compilateur m'affiche l'erreur suivante:
no matching function for call to 'set_int::set_int()'
.
merci de m'aider à corriger cette classe pour qu'elle compile d'abord avant de redéfinir l'opérateur d'affectation "=".
set_int.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
15
16
17
18
19
20
#ifndef SET_INT_H
#define SET_INT_H
 
 
class set_int
{
    int * adval ; // adresse du tableau des valeurs
    int nmax ; // nombre maxi d'éléments
    int nelem ; // nombre courant d'éléments
 
    public:
        set_int(int dim);
        set_int(const set_int& e);
        ~set_int();
        void ajoute (int) ; // ajout d'un élément
        int appartient (int) ; // appartenance d'un élément
        int cardinal () ; // cardinal de l'ensemble
};
 
#endif // SET_INT_H
set_int.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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "set_int.h"
#include <iostream>
using namespace std;
 
set_int::set_int (int dim)
{
    adval = new int [nmax = dim] ; // allocation tableau de valeurs
    nelem = 0 ;
}
set_int::set_int (const set_int& e) // ou set_int::set_int (const set_int & e)
{
adval = new int [nmax = e.nmax] ; // allocation nouveau tableau
nelem = e.nelem ;
int i ;
for (i=0 ; i<nelem ; i++) // copie ancien tableau dans nouveau
adval[i] = e.adval[i] ;
}
set_int::~set_int ()
{
    delete adval ; // libération tableau de valeurs
}
void set_int::ajoute (int nb)
{
    if (!appartient (nb) && (nelem<nmax)) adval [nelem++] = nb ;
}
int set_int::appartient (int nb)
{
    int i=0 ;
    while ( (i<nelem) && (adval[i] != nb) ) i++ ;
    return (i<nelem) ;
}
int set_int::cardinal ()
{
    return nelem ;
}
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
18
19
#include <iostream>
#include "set_int.h"
 
using namespace std;
 
int main()
{
    set_int p;
    cout << "donnez 20 entiers \n" ;
    int i, n ;
    for (i=0 ; i<20 ; i++)
    {
        cin >> n ;
        p.ajoute(n);
    }
    cout << "il y a : " <<p.cardinal()<< " entiers différents\n" ;
 
    return 0;
}