abs的返回类型是复杂的
Return type of abs is complex?
std::abs返回复数值吗?也就是说,一个实数用一个虚部为零的复数表示。我得到这个错误
g++ -march=native "utilities.cpp" -fpic -g -Wall -c -std=c++11 -I"/home/torbjorr/deployed" -o "__wand_targets_dbg/utilities.o"
In file included from /usr/include/c++/4.8/algorithm:62:0, from /home/torbjorr/deployed/herbs/memory/memory.h:14, from /home/torbjorr/deployed/vector/matrixstorage.h:10, from frame_in.h:9, from utilities.cpp:6: /usr/include/c++/4.8/bits/stl_algo.h: In instantiation of '_OIter std::transform(_IIter, _IIter, _OIter, _UnaryOperation) [with _IIter = std::complex<float>*; _OIter = float*; _UnaryOperation = std::complex<float> (*)(const std::complex<std::complex<float> >&)]': utilities.cpp:89:34: required from here /usr/include/c++/4.8/bits/stl_algo.h:4926:12: error: cannot convert 'std::complex<float>' to 'float' in assignment *__result = __unary_op(*__first);
当像这样调用时:
std::transform(spectrum.begin(),spectrum.end(),temp.begin()
,std::abs<std::complex<float> >);
从cppreference.com :
template< class T > T abs( const complex<T>& z );
在本例中,我希望返回一个浮点数
std::transform(spectrum.begin(),spectrum.end(),temp.begin()
,std::abs<std::complex<float> >);
注意这里你正在尝试使用std::abs<std::complex<float>>
。在这种情况下,模板参数T
是std::complex<float>
。如果在std::abs
的签名中替换T
,则得到:
std::complex<float> abs( const std::complex<std::complex<float>>& z );
我相信你打算使用的函数是std::abs<float>
,这将导致这样的签名:
float abs(const std::complex<float>& z);
错误信息显示表达式的类型
spectrum.begin()
和spectrum.end()
是std::complex<float>*
而表达式temp.begin()
的类型为float*
您正在尝试应用函数
template< class T > T abs( const complex<T>& z );
转换为float类型的对象,但没有从complex<float
类型到float.
类型的隐式转换。
错误:无法在赋值中将std::complex转换为float __result = __unary_op ( __first);
任何数(实数或复数)的绝对值定义为向量从原点到它在阿甘平面上的点的长度。
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++中函数的向量返回类型引发错误
- 检查函数返回类型是否与STL容器类型值相同
- 为什么返回类型中需要typename?C++
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 推导 std::vector::back() 的返回类型
- 在 c++ 中将函数返回类型指定为模板参数
- 调用C++具有复杂参数和复杂返回类型的函数 C 代码
- googlemock - 模拟返回复杂数据类型的方法
- abs的返回类型是复杂的
- 如何使用PyObject_CallObject查询复杂返回类型的数据?