5

我是 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& 和 double& 指的是什么,但是我怎样才能将 const double& 转换为 double 呢?

谢谢!

4

1 回答 1

2

现在我想我明白 const double& 和 double& 指的是什么,但是我怎样才能将 const double& 转换为 double 呢?

请注意,某些编译器在错误消息中使用该语法来表示与代码中的含义不同的东西。错误消息告诉您用作函数参数的类型是什么,而不是函数采用什么类型。

如果你想得到double错误信息,你只需要调用一个按值 a 返回的函数double,但这不是你想要的。

你需要的是找出为什么调用是模棱两可的。编译器是否在稍后的错误消息中为您提供了考虑哪些函数签名?它应该,并且阅读它正在考虑的不同重载将有助于找出为什么它在这种情况下是模棱两可的。

于 2013-04-11T16:19:49.047 回答