调用重载'pow(const double&,double)'是不明确的

inemo 发布于 2019-03-09 c++ 最后更新 2019-03-09 14:35 4 浏览

我是C++新手,这里是我的问题:我需要这个数量:

h = pow(mesh.V()[i0],1.0/3);
但是每次编译程序时都会收到此错误消息:
    call of overloaded ‘pow(const double&, double)’ is ambiguous
如果我写
double V = mesh.V()[i0];
h = pow(V,1.0/3);
我得到:
    call of overloaded ‘pow(double&, double)’ is ambiguous
现在我想我明白什么const double&和双&参考,但我该如何转换 const double&到双? 谢谢!
已邀请:

afuga

赞同来自:

Now I think I understand what const double& and double& refer to,but how can I convert the const double& to a double?
请注意,某些编译器在错误消息中使用该语法来表示与代码中的含义不同的内容。错误消息告诉您用作函数参数的类型是什么,而不是函数采用的类型。 如果您想在错误消息中获取double,您只需要调用一个按值double返回的函数,但这不是您想要的。 你需要的是找出呼叫模糊的原因。编译器稍后会在错误消息中为您提供哪些函数签名?它应该,并阅读它正在考虑的不同重载将有助于找出它在这种情况下的模糊性。