Immagino sia un esercizio, perché la classe di per se avrebbe solo bisogno dell'operatore di uguaglianza.
Intanto la dichiarazione dell'operatore di assegnamento è sbagliata (controlla meglio dove stai studiando per vedere quella giusta).
Detto questo, devi copiare i dati a uno a uno e se uno di questi dati è complesso (un array, una lista, uno stack o altro) devi applicare lo stesso princiop a ogni dato contenuto in questi dati complessi.
Nel caso puramente didattico della lista è:
codice:Automobile(const Automobile& a) { for(list<Componente>::iterator i=a.componenti.begin() ; i!=a.componenti.end() ; i++) componenti.push_back(*i); }