схожих случаях?
#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(); } вот тут проверить на нул перед разыминованием
Обсуждают сегодня