Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 15th, 2012  |  syntax: None  |  size: 0.61 KB  |  hits: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Boost shared_from_this and destructor
  2. class A{
  3. public:
  4.     A( Manager * m ) : m_(m) {
  5.         m_->add(this);
  6.     }
  7.  
  8.     ~A() {
  9.         m_->remove(this);
  10.     }
  11.  
  12. private:
  13.     Manager * m_;
  14. };
  15.        
  16. class A : public boost::enable_shared_from_this< A > {
  17. public:
  18.     typedef boost::shared_ptr< A > Ptr;
  19.  
  20.     static Ptr create( Manager * m ) {
  21.         Ptr p( new A(m));
  22.         p->init();
  23.         return p;
  24.     }
  25.  
  26.     ~A() {
  27.         // NON-WORKING
  28.         // m_->remove( shared_from_this() );
  29.     }
  30.  
  31. private:
  32.     A( Manager * m ) : m_(m) { }
  33.  
  34.     void init() {
  35.         m_->add(shared_from_this());
  36.     }
  37.  
  38.     Manager * m_;
  39. };