Я пытаюсь создать эту структуру 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 секунд он завершается без другого вывода.
Контроллер не уничтожается. :(
Как решить проблему?
std::weak_ptr
? - person Mark Garcia   schedule 25.06.2013