【发布时间】:2012-02-25 23:27:09
【问题描述】:
我想将类的一部分复制到缓冲区。我需要这个来制作一些可以查看类中是否有更改的东西,并通过网络发送它以更新服务器上的更改。
我做了一个模板类,可以备份和恢复类。现在我正在制作“寻找差异”功能。我希望用户可以定义内存块的大小。这会将类分成几部分,发送的数据更少。
问题是我无法将类内存的一部分复制到堆中,我无法获得正确的地址。如果我做“班级地址”+“0x04”。然后我没有得到正确的地址。
这是我做的一个例子:
testclass test1;
testclass test2;
test1.set(1,1);
test2.set(1,2);
cout << &test1 << " " << (&test1 + 0x04) << endl; //0018FF24 0018FF44
memcpy(&test2,&test1 + 0x04,4);
test2.echo(); //Wrong data!
标题:
class testclass
{
int test,test2;
public:
void set(int a, int b) {test = a, test2 = b;}
void echo() {cout << test << " " << test2 << endl;}
};
希望有人能帮我解决这个问题。
谢谢!
【问题讨论】:
标签: c++ class heap-memory memcpy