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:
MAIN:
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << bs.BSV(A.getValue, bs.GetStrike, R, A.getVol, bs.GetMat) << endl;
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
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; }
HEADER:
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; }
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
Partager