Ricorda che quando espliciti un costruttore di copia e/o assegnamento il codice corretto lo devi scrivere tu per ogni dato membro, dato che stai bypassando i meccanismi interni del compilatore.
Poiché hai un puntatore sempre valido (e di cui non fai mai il delete) e gli altri dati sono int, il costruttore di copia e l'operatore di assegnamento non servono.
Faresti prima a toglierli che non a correggere eventuali errori.