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