Probleme de surcharge operateur +
Chères amies, chers amis du forum
J'ai créer une classe Abstraite var_alea:
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
|
#ifndef __VAR_ALEA_H_
#define __VAR_ALEA_H_
#include <cmath>
#include <ctime>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <numeric>
#include <cstring>
#define MAX(A,B) ( (A) > (B) ? (A):(B) )
#define MIN(A,B) ( (A) < (B) ? (A):(B) )
#define PI 3.14159265358979
#define DEUXPI 6.283185306
#define PI2 1.570796326794
class var_alea
{
public:
var_alea() {};
virtual ~var_alea() {};
virtual double operator()() = 0;
protected:
};
#endif |
et une classe Gauss
Gauss.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
|
#ifndef GAUSS_H
#define GAUSS_H
#include "var_alea.h"
#include "Uniform.h"
class Gauss : public var_alea {
public :
Gauss (double moy=0, double sigmadeux=1) : m_moy(moy), m_sigmadeux(sigmadeux)
{
}
Gauss (const Gauss &);
double operator ()();
Gauss & operator =(const Gauss &);
friend Gauss operator +(const Gauss &, const Gauss &);
private :
double m_moy, m_sigmadeux ;
};
#endif |
Gauss.cpp
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
|
#include "Gauss.h"
double Gauss::operator()()
{
Uniform U1, U2;
double V1, V2;
double S = 2;
while (S>=1)
{
V1 = U1();
V2 = U2();
V1 = 2.0*(V1 + 0.00001)-1.0;
V2 = 2.0*(V2 + 0.00001)-1.0;
S = V1*V1 + V2*V2;
};
return (m_moy + m_sigmadeux*(V1*sqrt((-2.0*log(S))/S)));
};
Gauss & Gauss::operator=(const Gauss &n)
{
m_moy = n.m_moy;
m_sigmadeux = n.m_sigmadeux;
return *this;
}
Gauss operator+ (const Gauss &n,const Gauss &m)
{
Gauss p (n.m_moy + m.m_moy,n.m_sigmadeux + m.m_sigmadeux);
return p;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include "Uniform.h"
#include "Poisson.h"
#include "Gauss.h"
#include <iostream>
int main()
{
srand(time(0));
Gauss G;
return 0;
}; |
La surcharge de l'operateur + pose probleme et voici le message d'erreur:
Code:
1 2 3 4 5
|
Gauss.cpp
1>Gauss.obj : error LNK2019: symbole externe non résolu "public: __thiscall Gauss::Gauss(class Gauss const &)" (??0Gauss@@QAE@ABV0@@Z) référencé dans la fonction "class Gauss __cdecl operator+(class Gauss const &,class Gauss const &)" (??H@YA?AVGauss@@ABV0@0@Z)
\Projet.exe : fatal error LNK1120: 1 externes non résolus
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ========== |
Pourriez vous m'aider SVP?
Merci