我有一个定义为:
的类class ExampleClass
{
public:
ExampleClass(HWND hwnd);
~ExampleClass();
....
....
....
}
有很多成员。后来,我创建了两个指针:
ExampleClass *example1 = new ExampleClass(hwndFrame1);
ExampleClass *example2 = new ExampleClass(hwndFrame2);
此处hwndFrame1
和hwndFrame2
是两个不同窗口的句柄。
在某些时候,我需要同步example1
和example2
指向的这两个类的所有成员的值。当然,我可以由每个成员为每个成员做这个。但我想知道是否有一个" one-go"解决方案。
答案 0 :(得分:2)
缺乏任何进一步的信息我建议:
*example2 = *example1;
如果ExampleClass
正在使用编译器声明的复制赋值运算符,则应该执行成员复制,否则它应该执行“相应的操作”。显然,指向的两个对象将在此之后引用相同的底层窗口。
答案 1 :(得分:0)
除了Charles Bailey的答案,您还可以通过以下方式实现两个对象的同步:
memcpy(example2, example1, sizeof(ExampleClass));
之后你最终可以设置回窗口指针(假设你也不想同步这些),如下所示:
HWND wnd = example2->window;
memcpy(example2, example1, sizeof(ExampleClass));
example2->window = wnd;
您可以在ExampleClass复制赋值运算符中实现它(如Charles Bailey建议的那样),但我不建议这样做,因为它不分配窗口指针,因此不是真正的赋值。相反,只需在单独的函数或方法中实现它。请注意,这通常仅在两个对象完全相同的类时才有效!