2
我看到几个网上的例子这表明的std ::复杂的变量,可以通过以下初始化:初始化的std ::复杂
std::complex<float> val(10, -2);
但是,有没有办法做到像下面这样:
std::complex<float> val;
val.real = 10;
val.imag = -2;
我看到几个网上的例子这表明的std ::复杂的变量,可以通过以下初始化:初始化的std ::复杂
std::complex<float> val(10, -2);
但是,有没有办法做到像下面这样:
std::complex<float> val;
val.real = 10;
val.imag = -2;
std::complex::real
和std::complex::imag
是实际上可以功能。他们可以通过提供值作为参数来要么返回实/虚部以及对其进行设置,但仍然使用函数调用语法:
std::complex<float> val;
val.real(10);
val.imag(-2);
然而,这不叫初始化 。这会更改val
的值,该值已在第一行代码中初始化为零。
实际上,你看到同样的结果(即代码之后,val
拥有你希望它是值),但需要除非编译器的一些更多的指令可以优化送人。由于std::complex
是标准类型,因此编译器很有可能会这样做,但您无法确定。
http://stdcxx.apache.org/doc/stdlibug/20-2.html – Gilad 2013-02-23 07:52:29
gcc允许val.real()= 10作为C++ 03模式的扩展,但不能用于C++ 11模式。正确的语法是val.real(10); val.imag(-2);. – 2013-02-23 07:55:55
* reinterpret_cast(&val)= 10 and reinterpret_cast (&val)[1] = - 2也可以保证正常工作。 –
2013-02-23 08:02:46