【发布时间】:2017-03-14 11:28:56
【问题描述】:
我正在编写 c++11。 在A类中,我有一个成员变量“成员”,它被定义为
vector<OtherClass> member; // A's member variable
我想将A(所以我想将向量中包含的OtherClass中的所有数据类型)序列化为二进制格式的文件,所以我定义了一个函数write如下。
void A::write(ostream& os){ // A's function for outputting A
os.write(reinterpret_cast<const char*>( &(member.size()) ), sizeof(member.size()));
}
但是编译器说左值需要作为一元'&'操作数。
如何在 write 函数中不创建 long size=member.size() 等临时对象来修复它?
【问题讨论】:
-
请明确您收到的确切错误消息。
-
这看起来很不幸,但我无法在没有本地人的情况下实现。
-
你到底想写什么给
os? -
由于需要左值,因此您无法制作临时文件。只好硬着头皮去做。如果你有一个非常酷的编译器,它甚至可以优化它,如果不复制 4/8 字节也没什么大不了的。 I/O 如此繁重,您永远不会注意到一个副本。