gpt4 book ai didi

c++ - 如何从 C++ 中的 void 指针复制数据?

转载 作者:太空宇宙 更新时间:2023-11-04 16:04:52 26 4
gpt4 key购买 nike

我将所有参数的数据结构作为 void* 传递给我的函数:

void func(void* param, size_t size) {
// here I need copy data from param
void * copy_data = malloc(size);
memcpy(copy_data, param, size);
...
}

// call it like this
func(&data, sizeof(data));

当参数为 struct 并且其中有对象时,如下所示:

struct data {
CustomClass object;
};

memcpy 不会复制object 中的真实数据。

有没有办法从void*中复制真实数据?如果不是,关于它的最佳实践是什么?我想一定有人问过这样的问题,我只是找不到:-)

最佳答案

理想情况下,您不得将 void* 与结构和类一起使用。 struct/class 可能不是POD(纯对象数据 - 只有数据,没有虚函数、构造函数、析构函数、继承等) .最好编写自定义代码来复制类,最好是在类本身内。这就是为什么我们要覆盖复制构造函数和赋值运算符。

以后,当您了解和学习更多语言时,您可以编写基于模板的代码。

关于c++ - 如何从 C++ 中的 void 指针复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37207038/

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