C++ 中的对象所有权(MVC 模式)

Object ownership in C++ (MVC pattern)

我非常了解 MVC 模式,但在 C++ 中实际实现的信息量少得惊人。对于此应用程序,我使用 wxWidgetsboost::depedency_injection,但情况应该是通用的。

在 C++ 11/14 中,我们对对象所有权有严格的规定:对象要么在所有者之间共享,要么对一个所有者唯一。我们还有旧式指针,用于非被调用者拥有的对象。

所以,问题是:在 C++ 的 MVC 中,谁拥有哪个对象 (model/view/controller)?

我现在的猜测:

Views 拥有 controllers,由 boost:di 作为 unqiue_ptr 注入。 Controllersviews 所有,并且 以任何形式存储状态(仅在 models 目录上执行的过程)。 Models 本身通过将它们作为 shared_ptr 注入而在所有 controllers 之间共享,并用于存储结果并为 controllers 操作

提供数据

它适合 MVC 吗?

好吧,MVC 的变体太多了,很难回答。但是不,控制器不属于视图,应该相反,因为控制器是视图和模型之间的功能桥梁。模型附加到视图,因此视图可以拥有模型。

检查 first C++ example or that second C++ example。在第一个中有 "static" 所有权,而在第二个所有权中有更多的波动。