cosa sono gli smart pointers...? comunque per il codice posterò 1 pezzo alla volta perchè è troppo lungo....