C++:在合并对象时管理指针

C++: Managing Pointers while merging objects

本文关键字:管理 指针 对象 合并 C++      更新时间:2023-10-16

我有许多表示多边形的对象。我有一组指向自己的多边形的指针。

遍历每对指针,如果多边形重叠成一个新的多边形,我会合并它们。我现在让对中的两个指针指向合并的多边形,以便能够再次合并它并在两个指针中进行更改。

现在我的问题很快就出现在三个对象上:

  1. 如您所料,A* 指向 A,B* 指向 B,C* 指向 C。
  2. 我合并了 A* 和 B*,现在都指向 AB
  3. 然后我合并了 A* 和 C*,现在都指向 ABC。

我的问题是现在 B* 不知道 AB 再次合并并且仍然指向 AB,这不是我想要的。

我想要的是行为而不是指针,所以我可以自由地提出任何建议。遗憾的是,唯一的限制是不允许我使用 C++11 或更高版本。

合并 A 和 C

时,合并属于同一多边形 A(和 C)所属的所有多边形。

这意味着,在合并 A*->AB 时,您还应该合并 B*->AB。

我只会通过"向前合并"来解决这个问题。

A* 指向 A,B* 指向 B.很好,这不会改变。合并 A 和 B 时,将两者都指向 AB。:

A* -> A -> AB <- B <- B*

现在使用 C*/C :

A* -> A -> AB <- B <- B*
            |
            V
C* -> C -> ABC