【发布时间】:2021-09-08 03:51:58
【问题描述】:
我正在尝试使用编码良好的库为正态分布创建累积密度函数 (CDF)。该库的实施与我的问题无关。所以我只在这里添加了接口。
void cumnor ( double *arg, double *result, double *ccum );
现在,我的成员函数接口:
double N(const double& x) const;
实施:
double EuropeanOption::N(const double& x) const
{ // cumulative density functions (CDF)
double cum, ccum;
cumnor(&x, &cum, &ccum);
return cum;
}
所以我的函数基本上取CDF中积分(x)的上限并返回值P。
但编译器会抛出以下内容:
EuropeanOption.cpp: In member function ‘double EuropeanOption::N(const double&) const’:
EuropeanOption.cpp:82:9: error: invalid conversion from ‘const double*’ to ‘double*’ [-fpermissive]
cumnor(&x, &cum, &ccum);
^~
In file included from EuropeanOption.hpp:3:0,
from EuropeanOption.cpp:3:
cdflib.hpp:60:6: note: initializing argument 1 of ‘void cumnor(double*, double*, double*)’
void cumnor ( double *arg, double *result, double *ccum );
^~~~~~
我的问题是我应该如何编写这个函数?我只想称它为 N(d1)。我不太明白为什么我不能在这里传递 &x 作为第一个参数。
【问题讨论】: