所以我有以下代码,我想要做的简化版本。我有一个带有成员变量的类,根据具体情况(我为此测试创建了一个随机结构),我想将其设置为各种不同的数据类型。尽管我一直在memcpy函数上发生seg错误,但我不知道为什么。为什么这个memcpy不工作?
#include <cstdlib>
#include <iostream>
#include <assert.h>
#include <string>
#include <string.h>
#include <stdio.h>
using namespace std;
struct product
{
int price;
string name;
};
class object
{
public:
void setData(void *ptr);
void* data;
};
void object::setData(void *ptr)
{
assert(ptr);
memcpy(data, ptr, sizeof(ptr));
}
int main()
{
product* bag;
product ba;
bag = &ba;
bag->price = 5;
bag->name = "bag";
object test;
test.setData(bag);
cout<<test.data->name<<endl;
return 0;
}
'sizeof(ptr)'?????你期望这是什么? –
另外 - 你不能只是'memcpy'一个字符串对象。 –
即使你的'sizeof'正确,你也不能在非POD类型上使用memcpy,比如你的'product'类。 – PaulMcKenzie