for(int i=0; i<3; i++)
{
ofs.write(reinterpret_cast<char*>(&tel[i].getbianhao()),sizeof(char));
ofs.flush();
}
C2102:“&”要求左值
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
嗷呜大嘴狼 2023-03-12 11:02关注出现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/
评论 打赏 举报解决 1无用