gpt4 book ai didi

c++ - 在 C++11 中左值需要作为一元 '&' 操作数

转载 作者:行者123 更新时间:2023-11-28 01:51:46 27 4
gpt4 key购买 nike

我正在编写 C++11。在类 A 中,我有一个成员变量“成员”,定义为

vector<OtherClass> member; // A's member variable

我想将 A(所以我想将 vector 中包含的 OtherClass 中的所有数据类型)序列化为二进制格式的文件,所以我定义了一个函数 write 如下。

void A::write(ostream& os){ // A's function for outputting A
os.write(reinterpret_cast<const char*>( &(member.size()) ), sizeof(member.size()));
}

但是编译器说左值需要作为一元“&”操作数。

如何在不在写入函数中创建临时对象(例如 long size=member.size())的情况下修复它?

最佳答案

问题是 &(member.size()) - 您没有分配 size() 的返回值并试图获取它的地址(它甚至可能没有地址).

但是不知道你为什么要在这里调用 size 无论如何你需要实际数据的起始地址:member.data()(或者如果你没有 C++11 &member [0])

关于c++ - 在 C++11 中左值需要作为一元 '&' 操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com