C2102:“&”要求左值

for(int i=0; i<3; i++)
{
ofs.write(reinterpret_cast(&tel[i].getbianhao()),sizeof(char));
ofs.flush();
}

出现C2102错误是因为尝试在一个右值上取地址,而取地址操作(&)要求左值。在你的代码中,tel[i].getbianhao()返回的是一个右值(即临时值),不能直接在其上面取地址。

解决方案是将返回值存储在一个左值中,然后再在左值上取地址。比如:

char ch = tel[i].getbianhao();
ofs.write(&ch, sizeof(char));
ofs.flush();


这里将tel[i].getbianhao()返回的char类型值存储在了一个名为ch的左值中,并在&ch上取地址,这样就可以避免C2102错误。

答案来自 我点评开发社区 https://www.wodianping.com/