3

我有一个struct cVector3d,我正在memcpy把它变成一个这样的 char 数组:

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”错误。

4

2 回答 2

4

原因在您链接的文档中:

double &  operator[] (unsigned int index)
double    operator[] (unsigned int index) const

当您使用非常量版本时,您会获得一个左值引用,并且您可以获取它的地址(即被引用的地址double)。当你使用 const-version 时,你会得到一个临时的并且语言禁止你获取它的地址。

于 2013-07-16T07:01:02.123 回答
1

您的问题在文档中是这样的:

double  operator[] (unsigned int index) const

如果你有一个 const 向量,则 operator[] 返回一个临时值。而且你不能取临时地址。

于 2013-07-16T07:02:09.377 回答