我正在尝试为我的项目创建这个 MVC 结构。我第一次使用 shared_ptr 和 weak_ptr 并且除了循环依赖之外也遇到了很多问题。
模型是可观察的。视图是观察者。
class Observable
{
std::set< std::shared_ptr<Observer> > observers;
public:
Observable( void );
void registerObserver( std::shared_ptr<Observer> );
void removeObserver( std::shared_ptr<Observer> & );
void notifyObservers( void );
virtual ~Observable( void );
};
class Observer
{
public:
Observer(void);
virtual void update() = 0;
virtual ~Observer(void);
};
class Model : public Observable
{
public:
Model(void);
void internalStateChange();
void funcForController();
int getSomethingForView() const;
~Model(void);
};
class View :
public Observer
{
std::weak_ptr<Model> model;
std::shared_ptr<Controller> controller;
public:
View( const std::shared_ptr<Model> &, const std::shared_ptr<Controller> & );
void update() override;
~View(void);
};
class Controller
{
std::shared_ptr<Model> model;
std::shared_ptr<View> view;
public:
Controller( std::shared_ptr<Model> & );
void changeHappened() const;
~Controller(void);
};
我的输出是:
这表明它在某处挂断,然后在 50 秒后终止,没有其他输出。
控制器没有被破坏。:(
我该如何解决这个问题?