Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Classe, Héritage en C++ pour des variables aléatoires

Posté par
Coup
26-11-11 à 23:01

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.

Posté par
Coup
re : Classe, Héritage en C++ pour des variables aléatoires 26-11-11 à 23:39

C'est bon je viens de régler le problème, il fallait definir operator()() à l'intérieur de la classe AleaDisc .

Posté par
Jempart
re : Classe, Héritage en C++ pour des variables aléatoires 27-11-11 à 18:44

Ok
(c'est juste pour enlever le topic de la liste des topics non répondus)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !