我收到错误消息:
ISO C ++指出,尽管前者的最坏转换比后者的最差转换要好,但它们还是模棱两可的:
Distribution.H:515:注意:候选1:概率正态:: cdf(float64_t)const
Distribution.H:512:注意:候选项2:概率正态:: cdf(const RationalVector&)“
RationalVector定义为
class RationalVector : public Array<float64_t>
我无法更改此类或“ cdf”函数,因为它们是第三方库的一部分。我的代码给出以下行的错误:
return cABS*( exp(Md + 0.5*Vd)*stdN.cdf(d1) - K*stdN.cdf(d2) );
其中d1和d2均为双精度。我尝试将它们都强制转换为float64_t,以强制使用第一个cdf函数,例如:
return cABS*( exp(Md + 0.5*Vd)*stdN.cdf((float64_t)d1) - K*stdN.cdf((float64_t)d2) );
但是,错误仍然存在。
普通功能定义为:
Probability cdf(float64_t x) const;
Probability cdf(RationalVector const & x);
关于此问题是什么或如何解决的任何想法?
最佳答案
第二个过载未命中const
,这可能是模棱两可的原因。
如果要调用第一个重载,请尝试使stdN
为const对象。
关于c++ - ISO C++表示这些模棱两可,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25669247/