Salut à tous,
J'ai un problème avec mon code et je ne sais pas où se trouve le problème
#include <iostream>
#include <cstdlib>
#include <cmath>
inline double unif_rand() {
return (rand() + 0.5)/(RAND_MAX + 1.0);};
class Alea {
public:
virtual double operator()() const = 0;
virtual double esp() const = 0;
virtual double var() const = 0;
virtual ~Alea() {}
};
class AleaDisc : public Alea {
public:
virtual double loi(int) const = 0;
virtual double operator()() const = 0 ;
virtual ~AleaDisc() {}
};
double AleaDisc:: operator()() const {
int x = 0;
double Fx = loi(0), y = unif_rand();
while ( y > Fx ) {Fx += loi(++x);}
return double(x);
};
class Uniform_disc : public AleaDisc {
int a, b;
public :
Uniform_disc(int A = 0 , int B = 0) : a(A),b(B) {} ;
double loi(int x ) const{return double(x/(b-a+1));} ;
double esp() const{return (a + (b-a)*(b-a+1)/2.0)/(b-a+1) ;};
double var() const ;
};
int main() {
Uniform_disc A;
return 0;
}
Il m'affiche "cannot declare variable 'A' to be of type 'Uniform_disc' "
Je n'arrive pas à comprendre pourquoi on ne considère pas A comme de type Uniform_disc (uniforme sur un ensemble discret comme {0,1,..,n})
J'espère de tout coeur une petite aide.
Merci.
C'est bon je viens de régler le problème, il fallait definir operator()() à l'intérieur de la classe AleaDisc .
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :