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

时间:2014-01-17 03:59:43

标签: c++ oop

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

3 个答案:

答案 0 :(得分:1)

您要实现的目标可以通过实施“观察者模式”来完成。您的拼图对象将注册Square对象中的事件。 Square对象在状态发生变化时通知Puzzle。以下链接将帮助您了解如何完成所有这些。

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

答案 1 :(得分:0)

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

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

现在任何需要在方形对象上调用GoUp()通知拼图对象的代码只需要调用该函数。

答案 2 :(得分:0)

你的意思是回调功能吗?

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