Unique_ptr

di il
3 risposte

Unique_ptr

Ho una classe che contiene un

vector<unique_ptr<paziente>> pazienti;

ma anche la classe paziente contiene un

vector<unique_ptr<farmaco>> farmaci

quando vado ad inserire elementi nel primo vettore mi da è errore a causa della presenza del secondo vettore.
L'errore che mi dà è
use of delete function...
in che modo posso dichiarare il secondo vettore per evitare questo errore?

grazie in anticipo

3 Risposte

  • Re: Unique_ptr

    Mostra il codice che usi (e l'errore completo)
  • Re: Unique_ptr

    .hpp
    class main_class {
    public:
    main_class();
    virtual ~main_class();
    template<class T> vector<unique_ptr<T> > ordinapersone(vector<unique_ptr<T> >&);
    void stampa() const;
    string getdottori();
    private:
    vector<unique_ptr<paziente> > pazienti;
    vector<unique_ptr<dottore> > dottori;
    };
    .cpp
    dottore dot1("gianni","carfora","111",1958,"ginecologia");
    dottore dot2("lorenzo","loffredo","2222",1958,"cardiologia");

    paziente paz1("antonia","affinito","555",1992);
    paziente paz2("lucia","cioffi","666",1992);

    dottori.push_back(unique_ptr<dottore> {new dottore{dot1}});
    dottori.push_back(unique_ptr<dottore> {new dottore{dot2}});
    pazienti.push_back(unique_ptr<paziente> {new paziente{paz1}});
    pazienti.push_back(unique_ptr<paziente> {new paziente{paz2}});
    .hpp
    class paziente : public persona{
    private:

    vector<unique_ptr<farmaco> > farmaci ;

    dottore Dottore;

    errore:Description Resource Path Location Type
    use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = farmaco; _Dp = std::default_delete<farmaco>]'
  • Re: Unique_ptr

    I contenitori c++ in generale richiedono che gli oggetti contenuti siano copiabili e assegnabili. unique_ptr è solo movibile.
Devi accedere o registrarti per scrivere nel forum
3 risposte