过七更 2023-03-12 10:58 采纳率: 0%
浏览 364

C2102:“&”要求左值

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

  • 写回答

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/

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日