static_cast complex <short>到c ++中的复杂<double>

Kyl*_*lka 1 c++ casting static-cast eigen c++11

我想使用static_cast将复杂的<short>转换为complex <double>.

将complex <int16_t>转换为complex <double>

我试图做同样的事情,但我需要使用static_cast.我无法使用该解决方案的原因是因为我使用的是在其cast()函数中使用static_cast的Eigen.有没有办法扩展static_cast的功能以这种方式转换?或者有没有办法扩展Eigen的cast()函数来处理这种转换?

这基本上就是我的尝试:

Eigen::Array<std::complex<short>, Eigen::Dynamic, 1> short_array;
Eigen::Array<std::complex<double>, Eigen::Dynamic, 1> double_array;
double_array = short_array.cast< std::complex<double> >();
Run Code Online (Sandbox Code Playgroud)

bar*_*top 6

我没有这样的cast功能就做到了:

Eigen::Array<std::complex<short>, Eigen::Dynamic, 1> short_array;
Eigen::Array<std::complex<double>, Eigen::Dynamic, 1> double_array;
double_array = short_array.unaryExpr(ptr_fun(complex_cast<double, short>));
Run Code Online (Sandbox Code Playgroud)

铸造复合体的功能可能如下所示:

template<class T, class U>
std::complex<T> complex_cast(const std::complex<U> &c) {
    return { static_cast<T>(c.real()), static_cast<T>(c.imag()) };
}
Run Code Online (Sandbox Code Playgroud)