我有一个struct cVector3d
,我memcpy
将它变成了这样的字符数组:
void insert_into_stream(std::ostream& stream, cVector3d vector)
{
int length = sizeof(double)*3;
char insert_buffer[sizeof(double)*3];
memcpy(insert_buffer, &vector[0], length);
stream.write(insert_buffer, length);
}
如果我在参数列表中使用const cVector3d vector
,则会收到“& requires l-value
”错误。
答案 0 :(得分:4)
原因在于您链接的文档:
double & operator[] (unsigned int index)
double operator[] (unsigned int index) const
当您使用非const版本时,您将获得l值引用,并且您可以获取其地址(引用的double
的地址)。当你使用const-version时,你得到一个临时版本,并且语言禁止你获取它的地址。
答案 1 :(得分:1)
您的问题出现在文档中:
double operator[] (unsigned int index) const
如果你有一个const向量,operator []会返回一个临时值。你不能拿一个临时的地址。