Bonjour,
J'ai une classe defini comme telle:
Mais j'ai un probleme d'arument (je pense) lorsque j'essaye de l'appeller dans le code ci-dessous:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <PayOff1_Ex21.h> #include <MinMax.h> PayOff::PayOff(double Strike_, double (*f_)(double ,double )) { Strike = Strike_; FunctionPtr = f_; } double PayOff::operator ()(double spot) const { return FunctionPtr(Strike , spot); }
Le message d'erreur que j'obtiens est le suivant:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 #include<SimpleMC_Ex21.h> #include<iostream> using namespace std; double digitaloptions(double , double ); int main() { double Expiry; double Strike; double Spot; double Vol; double r; unsigned long NumberOfPaths; cout << "\nEnter expiry\n"; cin >> Expiry; cout << "\nEnter strike\n"; cin >> Strike; cout << "\nEnter spot\n"; cin >> Spot; cout << "\nEnter vol\n"; cin >> Vol; cout << "\nr\n"; cin >> r; cout << "\nNumber of paths\n"; cin >> NumberOfPaths; PayOff callPayOff(Strike, digitaloptions); PayOff putPayOff(Strike, digitaloptions); double resultCall = SimpleMonteCarlo2(callPayOff, Expiry, Spot, Vol, r, NumberOfPaths); double resultPut = SimpleMonteCarlo2(putPayOff, Expiry, Spot, Vol, r, NumberOfPaths); cout <<"the prices are " << resultCall << " for the call and " << resultPut << " for the put\n"; double tmp; cin >> tmp; return 0; } double digitaloptions(double Spot_d, double Strike_d) { //return max(Spot_d-Strike_d,0); return 0; }
D'avance merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 1>SimpleMCMain2_Ex21.cpp 1>c:\moondragon\distancelearning\cpp\code\chap2.1\simplemcmain2_ex21.cpp(35) : error C2664: 'PayOff::PayOff(double,double (__cdecl *)(double,double))' : cannot convert parameter 2 from 'double' to 'double (__cdecl *)(double,double)' 1> There is no context in which this conversion is possible 1>c:\moondragon\distancelearning\cpp\code\chap2.1\simplemcmain2_ex21.cpp(36) : error C2664: 'PayOff::PayOff(double,double (__cdecl *)(double,double))' : cannot convert parameter 2 from 'double' to 'double (__cdecl *)(double,double)' 1> There is no context in which this conversion is possible 1>Build log was saved at "file://c:\MoonDragon\DistanceLearning\cpp\code\chap2.1\Debug\BuildLog.htm" 1>chap2.1 - 2 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Partager