Domanda i merito alle classi astratta

di il
3 risposte

Domanda i merito alle classi astratta

Salve ragazzi sto realizzando un programma e mi sorge un errore inaspettato
vi spiego ho una classe astratta che è classe base di tre altr classi derivate...visto che vi sono due dati comuni a tutte le classi derivate posso definirle nel private della classe astratta
Vi posto il codice:


#include <string>
#include <iostream>
using namespace std;
class chiamata{
public:
    virtual void stampa();
    
    chiamata(string a,string b):data(a),orario(b){;}
    virtual void setchiamata(string,string);
    virtual void costoinEuro()=0;
protected:
    string data;
    string orario;
 };
poi realizzo le 3 classi derivate con gli altri dati...il problema che riscontro è che quando vado a definire un oggetto derivato ad esempio
chiamataderivata uno;-------mi dice che questa è una classe astratta ma lui deriva da una classe astratt..perchè mi dice questo???come risolvo????

3 Risposte

  • Re: Domanda i merito alle classi astratta

    La gerarchia resta astratta fino a quando una delle delle classi derivate darà un'implementazione di
    
    virtual void costoinEuro()=0;
    
    Se hai tre classi derivate distinte della classe astratta, ognuna di queste classi derivate deve fornire l'implementazione del metodo.
  • Re: Domanda i merito alle classi astratta

    Quindi se nelle classi derivate implemento il metodo che avevo definito virtuale puro nella classe base risolvo il problema??
  • Re: Domanda i merito alle classi astratta

    Si. E' sufficiente anche un metodo vuoto.
    
    void Derivata::costoinEuro() {};
    
    affinché derivata non sia più astratta.
Devi accedere o registrarti per scrivere nel forum
3 risposte