Oppure

Loading
25/05/11 19:22
anthony015
ho il seguente problema: ho un array di oggetti di "superclasse", il quale contiene svariati oggetti di svariate sottoclassi, sapendo che in una determinata posizione dell'array ho posizionato un oggetto di una sottoclasse nota, come posso effettuare l'operazione di casting da superclasse a sottoclasse?
class super{};
class sotto1:public super
{
        private int a;
        public sotto1(int b)
        {
              a=b;
        }
};
class sotto2:public super
{
        private double a;
        public sotto2(double b=0)
        {
              a=b;
        }
};

main:
int main()
{
     sotto1 x(2);
     sotto2 y(34);
     super array[2];
     array[0]=x;
     array[1]=y;
     sotto1 z=(sotto1)array[0]; //mi da errore
}

c'è un modo per ridefinire il casting nel modo che mi serve, oppure c'è un'altra soluzione?
grazie
Ultima modifica effettuata da anthony015 25/05/11 19:23
aaa
26/05/11 15:35
Il Totem
C'è un problema concettuale. Non ti dovrebbe servire sapere che in un dato posto dell'array esiste un oggetto il cui tipo è più derivato di quello dell'array stesso. Il codice dovrebbe dipendere dall'astrazione e non dai dettagli.
aaa