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:
cout << bs.BSV(A.getValue, bs.GetStrike, R, A.getVol, bs.GetMat) << endl;
MAIN:
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":
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:
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;
}; |
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 |
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