[Risolto] Proibire copia per oggetti

di il
2 risposte

[Risolto] Proibire copia per oggetti

Come progetto universitario devo realizzare una versione molto elementare di un social network in c++. Il progetto comprende delle classi come Utente e Gruppo. Ora a me interesserebbe non consentire la copia di un oggetto utente (vale lo stesso per gruppo). Infatti non avrebbe senso oltre ad essere sbagliato concettualmente consentire la creazione di 2 utenti uguali (stesso username, password e informazioni personali).
Può essere ragionevole pertanto dichiarare il costruttore di copia in modo che lanci sempre un'eccezione? Del tipo:
Utente(const Utente& u2){ throw exception("Copia non consentita.");}
Il problema è che poi anche nel passaggio per copia di valore verrebbe lanciata un'eccezione giusto?
Attendo consigli.
Grazie!

2 Risposte

  • Re: [Risolto] Proibire copia per oggetti

    Perche deve lanciare un eccezione. Semplicemente crea una classe base chiamata no_copy e le classi che vuoi non copiabili li derivi da questa.
    
    class no_copy
    {
    	protected:
    		no_copy() {}
    		~no_copy() {}
    	private:
    		no_copy(const no_copy&);
    		const no_copy& operator=(const no_copy&);
    };//no_copy
    
    come vedi sta classe non ha lo sviluppo delle funzioni e per di + sono messe come private. percui non è copiabile

    esempio:
  • Re: [Risolto] Proibire copia per oggetti

    Ho capito. In pratica il trucco è dichiarare il costruttore di copia e l'assegnazione privati. Buona idea mi piace grazie.
Devi accedere o registrarti per scrivere nel forum
2 risposte