C ++:左值作为一元'&'操作数

时间:2017-03-17 13:54:11

标签: c++

以下代码在我的工作系统中运行,相同的代码在我的PC中引发错误。

std::bitset<32> my_bit(*(uint32_t*)&(OFDM_cod[V][a/8].real()));

Error:
lvalue required as unary ‘&’ operand

有什么建议为什么会发生这种情况?提前致谢!

1 个答案:

答案 0 :(得分:4)

你不能拿一个临时的地址,这就是

&(OFDM_cod[V][a/8].real()));

正在做。它可以简化为

&x.real(); //here assuming real() does not return a reference

这并不好。您的代码可能适用于非标准兼容的编译器,这种编译器很容易 - 但是这种行为违反了C ++标准。