为什么我会收到这些错误? (我有一个error: use of undeclared identifier 'ccos'
error: use of undeclared identifier 'csqrt'; did you mean 'sqrt'?
error: use of undeclared identifier 'cpow'; did you mean 'pow'?
编译器。)
#include <complex>
double ghmc1AccNormalised( double ph, double r, double t, double th){
complex<double> numerator;
complex<double> denominator;
double E = exp(1);
numerator=-(cpow(E,t*((-2*r + r*ccos(th) + r* // ... etc
// what follows is 24MB of a horrible polynomial from Mathematica
...
denominator = cpow(2,0.3333333333333333) //... etc
return creal(numerator/denominator);
}
等等。我已将我的功能声明为:
inf
我正在努力确保我正确处理虚构变量。 我花了很长时间看各种帖子,但我有以下问题:
nan
和ccos
显示,当时他们不应该csqrt
,using complex;
等应该用于复杂的论点using std::complex;
std::complex
complex::
和c/c++
添加到每个功能 免责声明这是我的第一个appraisal_abstract_subdv.columns.values
函数,所以请忽略琐碎的问题,除非与问题直接相关
答案 0 :(得分:3)
您正在使用C标头complex.h
中的功能,您不包括这些功能。但C++ header complex
为cos
,sin
,pow
等 * 提供了重载。你应该使用它们而不是它们的C对应物。
#include <complex>
int main()
{
std::complex<double> c{1, 2};
auto c2 = pow(c, 2);
auto cc = sqrt(c2);
}
*请注意,它们位于std
命名空间中,但std::complex
也是如此,因此参数依赖查找(ADL)允许您在没有命名空间的情况下调用它们。 < / p>