Bonjour,

Dans mon main je souhaiterais appeler une méthode d'une classe et j'obtiens l'erreur "non-standard syntax; use '&' to create a pointer to member" sur la ligne de code suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cout << bs.BSV(A.getValue, bs.GetStrike, R, A.getVol, bs.GetMat) << endl;
MAIN:

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
24
25
26
27
28
29
 
int main()
{
	double S;
	double V;
	double R;
	double K;
	double T;
 
	cout << "Enter S" << endl;
	cin >> S;
	cout << "Enter V" << endl;
	cin >> V;
 
	cout << "Enter r" << endl;
	cin >> R;
	cout << "Enter K" << endl;
	cin >> K;
	cout << "Enter T" << endl;
	cin >> T;
 
	Stock A(S,V);
 
	EuropeanCall bs;
 
	cout << bs.BSV(A.getValue, bs.GetStrike, R, A.getVol, bs.GetMat) << endl;
 
	return 0;
}
BSV est virtual et figure dans ma classe mère "option" et fille "EuropeanCall":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
double EuropeanCall::BSV(double S, double K, double rf, double sigma, double T)
{
	double BS = 0;
 
	double d1 = (1.0*log(S / K) + (0.5*sigma*sigma)*T) / (sigma*sqrt(T));
	double d2 = d1 - sigma*sqrt(T);
 
	BS = 1.0*(S*exp(-rf*T)*N(1.0*d1) - K*exp(-rf*T)*N(1.0*d2));
 
 
	return BS;
}
HEADER:

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
class Stock:public Asset
{
public:
 
	Stock(double SP, double Vol);
	~Stock();
 
	virtual double getValue();
	void SetPrice(double P);
	void SetVol(double V);
	double getVol();
 
protected:
	double S_price;
	double S_vol;
};
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
class Option :public Asset
{
public:
 
	Option();
	~Option();
 
	virtual double BSV(double S, double O_strike, double r, double v, double O_maturity); 
	virtual char GetType();
 
	void SetStrike(double K);
	void SetMat(double T);
	double GetStrike();
	double GetMat();
	char type;
 
protected:
	double O_strike;
	double O_maturity;
	double O_price;
 
};
#endif
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
#ifndef __EuropeanCall__
#define __EuropeanCall__
 
#include <iostream>
 
class EuropeanCall :public Option
{
public:
 
	EuropeanCall();
	~EuropeanCall();
 
 
	virtual double BSV(double S, double K, double rf, double sigma, double T);
	char GetType();
 
protected:
	char type;
 
};
 
#endif

Merci