更快的方式来同步2类的成员(相同类型的类)

时间:2012-08-19 09:16:44

标签: c++ class synchronization

我有一个定义为:

的类
class ExampleClass
{
public:
ExampleClass(HWND hwnd);
~ExampleClass();
    ....
    ....
    ....
}

有很多成员。后来,我创建了两个指针:

ExampleClass *example1 = new ExampleClass(hwndFrame1);
ExampleClass *example2 = new ExampleClass(hwndFrame2);

此处hwndFrame1hwndFrame2是两个不同窗口的句柄。

在某些时候,我需要同步example1example2指向的这两个类的所有成员的值。当然,我可以由每个成员为每个成员做这个。但我想知道是否有一个" one-go"解决方案。

2 个答案:

答案 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建议的那样),但我不建议这样做,因为它不分配窗口指针,因此不是真正的赋值。相反,只需在单独的函数或方法中实现它。请注意,这通常仅在两个对象完全相同的类时才有效!