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

时间:2016-05-13 10:01:09

标签: c++

我将所有param的数据结构作为let d: [CanJump] = [Dog()] 传递给我的函数:

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复制真实数据?如果没有,那么它的最佳实践是什么?我想一定有人问过这样的问题,我就是找不到它: - )

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

您可以使用模板吗?

template<class T>
void func(T const& param) {
    // here I need copy data from param
    T copy_data = param;
    ...
}

// call it like this
func(data);