如何获取成员对象以通知其容器对象

How do I get a member object to notify its container object?

本文关键字:通知 对象 成员对象 何获取 获取      更新时间:2023-10-16

我有81个名为Square的对象,位于另一个称为Puzzle的对象中的二维数组中。我想这样做,当某个函数在单个 Square 对象中触发时,它会在其相应的 Puzzle 对象中触发一个函数。你建议怎么做?甚至可能吗?

你试图实现的目标可以通过实现"观察者模式"来完成。您的拼图对象将注册 Square 对象中的事件。Square 对象在其状态更改时通知拼图。以下链接将帮助您弄清楚如何完成所有这些操作。

http://www.codeproject.com/Articles/328365/Understanding-and-Implementing-Observer-Pattern-in

在不修改 SquarePuzzle 类的情况下执行此操作的最简单方法是将 Square 方法调用和Puzzle触发器代码封装在函数中。一个(有点做作的)例子是:

void GoUp(Square& sq, Puzzle& pz) {
   sq.GoUp();
   pz.NotifySquareGoUp(sq);
}

现在,任何需要调用 GoUp() 在 square 对象上并通知 puzzle 对象的代码只需要调用该函数。

你是说回调函数吗?

你可以在Square中存储一个指针或对Puzzle的引用,当调用Square的某个函数时,你可以通过指针/引用来做事。