Vettori di classi ereditarie

di il
6 risposte

Vettori di classi ereditarie

Salve a tutti.
Premetto che sono nuovo su c++ comunque la mia domanda è questa:

Come creare un vettore fra piu classi astratte diverse?

Es
Class Event{
Public:
Virtual void call() {}
}

Class EventCiao: public Event{
Public:
Void call(){
Cout << "ciao" << endl;
}
}


Class EventBo : public Event{
Public:
Void call(){
Cout << "bo" << endl;
}
}
}
Int main(){
EventCiao ciao;
EvebtBo bo;

Vector<[non so cosa mettere]> events;

Events.push_back(ciao);
Events.push_back(bo);
}

Spero di essere stato esaustivo.
Grazie in anticipo.

6 Risposte

  • Re: Vettori di classi ereditarie

    Scusate mi sono sbagliato a scrivere la domanda. come creare un vettore con piu classi ereditarie da una astratta?
  • Re: Vettori di classi ereditarie

    Devi usare un puntatore o un reference alla classe base. Dato che non è possibile creare un vector di reference tocca usare i puntatori.
    Versione semplice con gestione manuale della memoria.
    
    vector<Event*> events;
    events.push_back(new EventCiao);
    events.push_back(new EventBo);
    
    Versione fortemente consigliata con gestione automatica della memoria:
    
    vector<std::unique_ptr<Event>> events;
    events.push_back(std::make_unique<EventCiao>());
    events.push_back(std::make_unique<EventBo>());
    
  • Re: Vettori di classi ereditarie

    Grazie shodan per la tua risposta.
    La prima delle due opzioni funziona la seconda non so cosa devo includere e che vantaggi porta?
  • Re: Vettori di classi ereditarie

    Basta fare #include <memory>

    meglio che ritorni a studiare XD
  • Re: Vettori di classi ereditarie

    che vantaggi porta?
    Non devi preoccuparti di gestire manualmente la memoria
  • Re: Vettori di classi ereditarie

    A ok grazie per tutto.
Devi accedere o registrarti per scrivere nel forum
6 risposte