使用C ++进行强制转换的最佳方法是什么?

时间:2011-01-15 09:36:44

标签: c++ casting

在C ++中从complex投射到int的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

很难回答你的问题,因为一般来说,没有办法做到这一点。从数学上讲,将复数(a + bi)转换为实数(a + 0i)意味着什么?你可以放弃复杂的术语,或者将自己限制在b = 0的情况下,我想;第一种选择似乎不够优雅,第二种选择并不总是有效。

您需要解决的第二个问题是,在C ++中,complexfloatdouble存在long double模板,其中没有一个具有无损转换到int。所以我想如果你弄清楚第一部分的细节,那么你必须确保演员的其余部分仍然有效。

如果你想要做的是从complex中提取实际组件,你可以这样做:

complex<double> myComplex = /* ... */
double real = myComplex.real();

然后可能

int realInt = static_cast<int>(real);

答案 1 :(得分:0)

您可以重载operator int();