Chères amies, chers amies du forum
Je dispose de la structure en C suivante
avec m_valeurs définit comme suit dans la classe BW
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
et j'ai essayé de la transformer en classe C++ ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 list < pair <double , double > > m_valeurs ;
BS.h
BS.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
fun_bs.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; };
et le compilateur me renvoi ce message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)); }
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager