Newsgroup: it.comp.lang.c++
Titolo: Derivare una classe standard

Ciao a tutti. Posso derivare una classe standard, come map? Lo standard
che dice a proposito?

 che dice a proposito?
Presuma tu intenda derivare DA una classe standard.
Certo che si. 8-)
-- 
"Any sufficiently advanced technology is indistinguishable from magic."
                                                            Arthur C. Clarke

 che dice a proposito?
Questo è un esempio di derivazione da std::list. Ma tieni presente che
non so cosa dica lo standard in proposito e mi pare comunque di
ricordare che ci siano dei problemi al riguardo.
#include <iostream>
#include <list>
template < typename T > class MyList: public std::list < T >
{
    public:
        template < typename InputIterator > MyList( InputIterator first,
InputIterator last ): std::list < T >( first, last ) {}
        void Mostra()
        {
            for ( typename std::list < T >::iterator i = this ->
begin(); i != this -> end(); ++i )
                std::cout << *i << '\n';
        }
};
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    MyList < int > l( a, a + sizeof( a ) / sizeof( a[ 0 ] ) );
    l.Mostra();
    std::cout << "Elementi: " << l.size() << '\n';
    return 0;
}
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 Certo che si. 8-)
penso sia opinione comune che non sia una buona pratica riutilizzare
le classi della librerie standard per ereditarietà, sarebbe più
corretto riutilizzarle per contenimento. Questo è giustificato dal
fatto che le classi della libreria standard non hanno il distruttore
dichiarato 'virtual'.

 dichiarato 'virtual'.
Sono d'accordo, rimane il fatto che si può fare.. .8-)


Sono d'accordo, rimane il fatto che si può fare.. .8-)
Riuscire a farlo non vuol dire che sia necessariamente giusto che lo
si faccia.  In programmazione, una domanda: "posso derivare da una
classe standard ?" io la interpreto come "è giusto derivare da una
classe standard ?", perché sottointendo che vi sia la possibilità
_fisica_ di farlo (le classi standard C++ sono come tutte le altre).
-- 
Andrea Laforgia
Gioca a Tetris !
http://www.geocities.com/andrealaforgia/downloads.html

 _fisica_ di farlo (le classi standard C++ sono come tutte le altre).
D'accordo anche su questo, e la domanda era precisamente se si può fare, non 
se sia elegante o giusto.


se sia elegante o giusto.
Non si può fare, perché non è giusto farlo.
Punto e basta.


 Punto e basta.
Penso che la tua non sia una risposta logica.
Se qualcuno avesse chiesto "si può derivare da un tipo primitivo?", la
risposta sarebbe chiaramente no.
La domanda di Yes chiedeva se fosse _possibile_ o meno derivare da una
classe della libreria standard, e la risposta è inequivocabilmente sì.
E' vero che non è corretto farlo, ma questo bisogna aggiungerlo come
commento.
Non è che "non si può fare perché non è giusto farlo" ... che significa ?

 Punto e basta.
Quello era il Pascal... 8-)
Fammi indovinare:
- gli amici ti chiamano "Bjarne"
- di secondo cognome fai Stroustrup
- fai tu le revisioni allo standard-
- ogni tanto tiri le orecchie al compilatore perchè compila anche porcate 
evidenti purchè sintatticamente corrette...
;-)


 farlo (le classi standard C++ sono come tutte le altre).
 
Infatti, era questo che intendevo



No,mi sono espresso male. Intendevo proprio se era corretto farlo, in
quanto non sapevo se il distruttore ecc fossero virtual, e altre cosette
del genere. Guardare l'implementazione del mio compilatore sarebbe stato
inutile,e visto che non ho lo standard, ho chiesto qui. 
Grazie a tutti,comunque...

 Grazie a tutti,comunque...
Ok ... ho interpretato troppo letteralmente ;-)
Ciao

 Grazie a tutti,comunque...
usa il Contenimento Luke... usa il Contenimento!
--
Obi Ward Keroba  ;-)



Un livello di indirezione in più...non mi garba molto per la verità
Cmq, ho fatto una bella typedef a map coi template che dicevo io e vivo
felice!