Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:左值要求为一元‘&’;操作数_C++ - Fatal编程技术网

C++ C++;:左值要求为一元‘&’;操作数

C++ C++;:左值要求为一元‘&’;操作数,c++,C++,下面的代码在我的工作系统中工作,相同的代码在我的电脑中抛出错误 std::bitset<32> my_bit(*(uint32_t*)&(OFDM_cod[V][a/8].real())); Error: lvalue required as unary ‘&’ operand std::bitset my_bit(*(uint32_t*)和(OFDM_cod[V][a/8].real()); 错误: 作为一元'&'操作数所需的左值 有什么建议说明为什么会发生这

下面的代码在我的工作系统中工作,相同的代码在我的电脑中抛出错误

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

Error:
lvalue required as unary ‘&’ operand
std::bitset my_bit(*(uint32_t*)和(OFDM_cod[V][a/8].real());
错误:
作为一元'&'操作数所需的左值

有什么建议说明为什么会发生这种情况吗?提前谢谢

您不能获取临时地址,这就是

&(OFDM_cod[V][a/8].real()));
他正在做什么。它可以简化为

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

这是不好的。您的代码可能在非标准兼容编译器中工作,这是对这类东西的放松-但是这种行为违背C++标准。

< P>您不能接受临时地址,这是

&(OFDM_cod[V][a/8].real()));
他正在做什么。它可以简化为

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

这是不好的。您的代码可能在非标准兼容编译器中工作,这是对这类东西的放松——但是这种行为违背C++标准。< /P>请编辑您的问题以包含一个更好地将其复制到新变量中而不是铸造。通过除char以外的不相关类型的指针访问内存是UB。您认为您试图写什么?如何声明OFDM_cod,
.real()
方法的结果类型是什么?请编辑您的问题,使其包含一个新变量。最好将memcopy复制到新变量中,而不是强制转换。通过除char以外的不相关类型的指针访问内存是UB。您认为您试图写什么?如何声明OFDM_cod,
.real()
方法的结果类型是什么?您能建议访问该值的其他方法吗?@Harsha,我不知道您为什么需要地址和类型转换。@Harsha首先分配给左值(命名变量)。但不清楚您为什么需要一个指针。@斯拉瓦将OFDM_cod[V][a/8]分配给另一个变量会给我同样的错误。@Harsha您需要将
OFDM_cod[V][a/8].real()
分配给另一个变量。看起来您完全可以不使用指针进行强制转换。您能建议其他访问该值的方法吗?@Harsha,我不知道您为什么需要地址和强制转换。@Harsha首先分配给左值(命名变量)。但不清楚您为什么需要一个指针。@斯拉瓦将OFDM_cod[V][a/8]分配给另一个变量会给我同样的错误。@Harsha您需要将
OFDM_cod[V][a/8].real()
分配给另一个变量。看起来你根本不用指针就可以施放。