Nel primo esempio uso la list per inizializzare l'oggetto img (tra l'altro non serve che la classe abbia un construttore di default: quella sintassi lo bypassa), nel secondo alloco il puntatore e poi copio l'oggetto in questione.
Il secondo caso è quello più rognoso, in quanto occorre gestire il puntatore; non tanto nella futura deallocazione, ma in caso di copia o assegnamento di un oggetto di classe Button (per quello suggerisco sempre smart pointer).