kanagara

weak_ptr

Feb 21st, 2021 (edited)
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <memory>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. struct BadPlayer
  6. {
  7.   shared_ptr<BadPlayer> drugi_igrac;
  8.  
  9.   //Zbog toga sto ivan i marko pokazuju jedan na drugog, shared_ptr nikad nece moci da unisti niti jedan od ta dva
  10.   //objekta te ovaj destruktor nece nikada biti pozvan.
  11.   ~BadPlayer() { cout << "Unistavam igraca sa deljenom referencom\n"; }
  12. };
  13.  
  14.  
  15. struct GoodPlayer{
  16.   weak_ptr<GoodPlayer> drugi_igrac;
  17.  
  18.   //Zato sto imamo slabu referencu na drugog igraca, ovaj destruktor ce se pozvati na kraju scopea u kom su jovan i milan deklarisani
  19.   ~GoodPlayer() { cout << "Unistavam igraca sa slabom referencom \n"; }
  20. };
  21.  
  22.  
  23. int main()
  24. {
  25.   shared_ptr<BadPlayer> ivan(new BadPlayer());
  26.   shared_ptr<BadPlayer> marko(new BadPlayer());
  27.  
  28.   ivan->drugi_igrac = marko;
  29.   marko->drugi_igrac  = ivan;
  30.  
  31.    
  32.   shared_ptr<GoodPlayer> jovana(new GoodPlayer());
  33.   shared_ptr<GoodPlayer> milana(new GoodPlayer());
  34.  
  35.   jovana->drugi_igrac = milana;
  36.   milana->drugi_igrac = jovana;
  37.    
  38. }
Add Comment
Please, Sign In to add comment