схожих случаях?
                  
                  
                  #include <memory>
                  
                  
                  #include <iostream>
                  
                  
                  
                  
                  
                  class A {
                  
                  
                  public:
                  
                  
                      A() { std::cout << "A::ctor" << std::endl; }
                  
                  
                      ~A() { std::cout << "A::dtor" << std::endl; }
                  
                  
                  
                  
                  
                      void foo() { std::cout << "A::foo" << std::endl; }
                  
                  
                  };
                  
                  
                  
                  
                  
                  class B {
                  
                  
                  public:
                  
                  
                      B(const std::shared_ptr<A>& ptr) : _ptr(ptr) { }
                  
                  
                      void bar() { _ptr->foo(); }
                  
                  
                  private:
                  
                  
                      std::shared_ptr<A> _ptr;
                  
                  
                  };
                  
                  
                  
                  
                  
                  int main() {
                  
                  
                      auto a = std::make_shared<A>();
                  
                  
                      auto b = std::make_shared<B>(a);
                  
                  
                  
                  
                  
                      b->bar(); // OK
                  
                  
                  
                  
                  
                      delete a.get();
                  
                  
                  
                  
                  
                      b->bar(); // Fucked...
                  
                  
                  }
                  
                  
                
assert?
{ _ptr->foo(); } вот тут проверить на нул перед разыминованием
Обсуждают сегодня