gpt4 book ai didi

c++ - 为什么我不能在 memcpy 中使用 const 参数?

转载 作者:太空狗 更新时间:2023-10-29 20:42:45 24 4
gpt4 key购买 nike

我有一个 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”错误。

最佳答案

原因在您链接的文档中:

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

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

关于c++ - 为什么我不能在 memcpy 中使用 const 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669913/

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