#include #include struct Casa { int id; std::shared_ptr esquerda; std::weak_ptr direita; }; int main(int, char *[]) { auto c1 = std::make_shared(); c1->id = 1; { auto c2 = std::make_shared(); c2->id = 2; std::shared_ptr outra; outra = c1; c2->esquerda = c1; c1->direita = c2; auto c1dirshared = c1->direita.lock(); std::cout << c1->id << " "; if (c1dirshared) { std:: cout << c1dirshared->id << std::endl; } else { std::cout << "nulo" << std::endl; } std::cout << c2->id << " " << c2->esquerda->id << std::endl; } auto c1dirshared = c1->direita.lock(); std::cout << c1->id << " "; if (c1dirshared) { std:: cout << c1dirshared->id << std::endl; } else { std::cout << "nulo" << std::endl; } return 0; }