ISO C ++表示这些含糊不清

时间:2014-09-04 15:20:49

标签: c++

我收到错误:

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);

关于问题是什么或如何修复的任何想法?

1 个答案:

答案 0 :(得分:1)

第二次重载未命中const,这可能是模糊性的原因。

如果您打算调用第一个重载,请尝试将stdN设为const对象。