我收到错误消息:

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/

10-11 21:29