我收到错误:
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) );
但是,错误仍然存在。
Normal函数定义为:
Probability cdf(float64_t x) const;
Probability cdf(RationalVector const & x);
关于问题是什么或如何修复的任何想法?
答案 0 :(得分:1)
第二次重载未命中const
,这可能是模糊性的原因。
如果您打算调用第一个重载,请尝试将stdN
设为const对象。