From ac3830ae0c369fe9ab9f403f94215d073b9330aa Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sun, 9 Dec 2012 12:24:10 +0100 Subject: Implement copy construction and assignment for observers. --- cells.hpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'cells.hpp') diff --git a/cells.hpp b/cells.hpp index 4799e69..2aa17e7 100644 --- a/cells.hpp +++ b/cells.hpp @@ -29,22 +29,28 @@ namespace cells { class observer { private: - std::shared_ptr self; + std::shared_ptr const self; std::list> dependents; std::forward_list> dependencies; void clear_dependencies(); void mark_dependents(); + void reset_dependencies(std::forward_list> const&); + void reset_dependents(std::list> const&); + protected: void mark(); public: - observer() : self(std::make_shared(this)) { }; + observer(); + observer(observer const& other); + + observer& operator =(observer const& other); void add_dependent(observer* dependent); void remove_dependent(observer* dependent); - void reset_dependencies(std::forward_list const& newdeps); + void reset_dependencies(std::forward_list const&); virtual void update() = 0; -- cgit v1.2.3