Chères amies, chers amies du forum

Je dispose de la structure en C suivante
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;
}
avec m_valeurs définit comme suit dans la classe BW

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
list < pair <double , double > > m_valeurs ;
et j'ai essayé de la transformer en classe C++ ainsi

BS.h

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
BS.cpp

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.h

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;
};
fun_bs.cpp

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));
}
et le compilateur me renvoi ce message :

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
Merci