erreur de compilation "no matching function for call" en C++
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:
Citation:
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 "=".
Code:
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 |
Code:
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 ;
} |
Code:
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;
} |