Transformer une strucutre C en classe C++
Chères amies, chers amies du forum
Je dispose de la structure en C suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
struct BS : public BW
{
BS(int n, double x0, double r, double s, double T=1): BW(n, T), bs(x0, r, s) {};
list <pair <double , double > > operator()()
{
BW::operator()();
std::transform(m_valeurs.begin(), m_valeurs.end(), m_valeurs.begin(), bs);
return m_valeurs;
};
private:
struct fun_bs : public std::unary_function<pair <double , double >, pair <double , double >>
{
fun_bs(double x0, double r, double s): x0(x0), s(s), mu(r-0.5*s*s) {};
pair <double , double > operator()(const pair <double , double > &x)
{
return pair <double , double >(x.first, x0*exp(mu*x.first + s*x.second));
};
private:
double x0, s, mu;
} bs;
} |
avec m_valeurs définit comme suit dans la classe BW
Code:
1 2
|
list < pair <double , double > > m_valeurs ; |
et j'ai essayé de la transformer en classe C++ ainsi
BS.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
class BS : public BW
{
public :
BS (int n, double X_0, double r, double s, double T=1) : BW(n, T), bs(X_0, r, s)
{
};
list <pair <double , double > > operator ()();
private :
fun_bs bs;
};
#endif |
BS.cpp
Code:
1 2 3 4 5 6 7 8 9
|
#include "BS.h"
list <pair <double , double > > BS::operator ()()
{
BW::operator()();
transform(m_valeurs.begin(), m_valeurs.end(), m_valeurs.begin(), bs);
return m_valeurs;
} |
fun_bs.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include "BS.h"
class fun_bs : public std::unary_function<pair <double , double > , pair <double , double > >
{
public:
fun_bs(double X_0, double r, double s): m_X_0(X_0), m_s(s),m_mu(r-0.5*s*s)
{}
pair <double , double > operator()(const pair <double , double > &x);
private:
double m_X_0, m_s, m_mu;
}; |
fun_bs.cpp
Code:
1 2 3 4 5 6 7
|
#include "fun_bs.h"
pair <double , double > fun_bs::operator()(const pair <double , double > &x)
{
return pair <double , double >(x.first, m_X_0*exp(m_mu*x.first + m_s*x.second));
} |
et le compilateur me renvoi ce message :
Code:
1 2 3
|
error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'bs'
initialisation de membre non conforme : 'bs' n'est ni une base ni un membre |
Merci