c++ - static_cast 复合体复杂的在 C++ 中
问题描述
我想使用 static_cast 将 complex<short> 转换为 complex<double>。
将 complex<int16_t> 转换为 complex<double>
我正在尝试做与这篇文章相同的事情,但我需要使用 static_cast。我不能使用该解决方案的原因是因为我使用的是 Eigen,它在其 cast() 函数中使用了 static_cast。有没有办法扩展 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> >();
解决方案
如果没有这样的功能,我会这样做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>));
用于铸造 complex 的函数可能如下所示:
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()) };
}
推荐阅读
- reactjs - 使用 Material-UI 进行酶浅测试
- c# - 为什么 ExecuteNonQuery 会返回“输入在此上下文中无效”(ASP.NET | Ole Db)?
- android - 包含嵌套 RecyclerViews 的 BottomSheetBehavior ViewGroup 的垂直滚动不一致
- javascript - 如何保持文字的比例?
- angular - agm-marker-cluster 中的图像路径格式是什么,如何为不同类型分配不同的标记簇图标?
- exchangewebservices - Route exchange online public folder hierarchy requests failed with "Expected an item Id but received a folder Id"
- r - R如果一列中的值再次出现在另一列中而没有循环,则删除行
- bash - 如何使用 bash 将 if then 语句添加到具有多个参数的值
- spring - How to build a nonblocking Consumer when using AsyncRabbitTemplate with Request/Reply Pattern
- csv - 将 csv 保存为 txt 仅一列数据