#include #include using namespace std; struct BadPlayer { shared_ptr drugi_igrac; //Zbog toga sto ivan i marko pokazuju jedan na drugog, shared_ptr nikad nece moci da unisti niti jedan od ta dva //objekta te ovaj destruktor nece nikada biti pozvan. ~BadPlayer() { cout << "Unistavam igraca sa deljenom referencom\n"; } }; struct GoodPlayer{ weak_ptr drugi_igrac; //Zato sto imamo slabu referencu na drugog igraca, ovaj destruktor ce se pozvati na kraju scopea u kom su jovan i milan deklarisani ~GoodPlayer() { cout << "Unistavam igraca sa slabom referencom \n"; } }; int main() { shared_ptr ivan(new BadPlayer()); shared_ptr marko(new BadPlayer()); ivan->drugi_igrac = marko; marko->drugi_igrac = ivan; shared_ptr jovana(new GoodPlayer()); shared_ptr milana(new GoodPlayer()); jovana->drugi_igrac = milana; milana->drugi_igrac = jovana; }