0

我有一个类定义为:

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

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

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

这里hwndFrame1hwndFrame2是两个不同窗口的句柄。

在某些时候,我需要同步example1和指向的这两个类的所有成员的值example2。当然,我可以每个成员都这样做。但我想知道是否有一个“一次性”的解决方案。

4

2 回答 2

2

缺乏任何进一步的信息,我会建议:

*example2 = *example1;

如果ExampleClass使用编译器声明的复制赋值运算符,则应该按成员复制,否则应该做“适当的事情”。显然,被指向的两个对象将在此之后引用相同的底层窗口。

于 2012-08-19T09:26:03.720 回答
0

除了 Charles Bailey 的回答之外,您还可以自己实现两个对象的同步:

memcpy(example2, example1, sizeof(ExampleClass));

之后,您最终可以设置回窗口指针(假设您也不想同步这些),如下所示:

HWND wnd = example2->window;
memcpy(example2, example1, sizeof(ExampleClass));
example2->window = wnd;

您可以在您的 ExampleClass 复制赋值运算符中实现这一点(就像 Charles Bailey 建议的那样),但我不建议这样做,因为它不分配窗口指针,因此不是真正的分配。相反,只需在单独的函数或方法中实现它。请注意,这通常仅在两个对象属于完全相同的类时才有效!

于 2012-08-19T09:40:37.180 回答