Newsgroup: it.comp.lang.c++
Titolo: Aiuto disperato!

Devo consegnare domani un progetto di laboratorio.....
deco costruire una classe che gestisce i polinomi.
Ho creato quella che gestisce i monomi!
l'idea e quella di creare un array di monomi ma il mio problema e
passare al costruttore un array adimensionato.
La questione dovrebbe essere posta credo in questo modo:
class Poli
{
private:
    static Mono *pol[];
    void imposta(Mono *enter[]);
public:
    Poli()
        {
        Mono *temp;
        pol[0]=temp;
        }
    Poli(const Poli & t){imposta(t.pol)};
    ~Poli();
};
// FUNZIONE DI IMPOSTAZIONE
void imposta(Mono *enter[])
{
    int i,count=0;
    for (i=0;50;i++) if (enter[i]!=0,0) count++;
}
l'idea e' quella di passare all'oggetto polinomio un'array di monomi in
questo modo:
Poli identificatore(monomio1,monomio2,monomio3,........)
se passo Poli identificatore() il discorso funziona;
se passo Poli identificatore(monomio1,monomio2);
il compilatore mi dice che non esiste il costruttore ovviamente
Come posso passare al costruttore un'array adimensionato?

o con una lista da scorrere, oppure con un bel
Mono** pol;
da scorrere con
while(pol){
    aggiungi_a_Polinomio(*pol);
    ++pol;
}
avendo cura di terminare pol con un NULL;
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

 vendo cura di terminare pol con un NULL
non riesco a capire come devo definire il costruttore.

 wrote in message
387875FB...@libero.it...
: non riesco a capire come devo definire il costruttore.
Ho modificato leggermente la classe.
di seguito la nuova codifica.
class Poli
{
private:
    std::list< Mono > pol;
public:
    Poli(): pol(); {}
    Poli(const Poli& p){ pol = t.pol};
    Poli(Mono *mon) {
        while(mon != NULL){
            pol.push_back(*mon);
            ++mon;
        }
    }
    ~Poli();
};
/*  l'unico avvertimento è di terminare mon * con un NULL,
    ad es:
    Mono mon [] = {
        Mono(2.3),
        Mono(4),
        NULL
    };
    Non conosco la classe Mono, ma è importante il modo in cui è costruito
l'array.
*/


> Grazie mille!!!
Provo e spero di riuscire

 Poli identificatore(monomio1,monomio2,monomio3,........)
Escluderei di passare un numero arbitrario di parametri, perche`
questo implica che sono arbitrari anche i TIPI, e non hai modo di
verificarli.  Su questa strada, stanno tanti brutti crash.
Il modo canonico e` quello di passare un puntatore all'inizio
dell'array e uno subito dopo la fine; cioe` il tuo costruttore
sara` dichiarato:
    Poli(monomio* begin, monomio* end);
e implementato:
    Poli::Poli(monomio* begin, monomio* end)
    {
        for(monomio* i = begin; i != end; ++i)
            // inserisci *i opportunamente
    }
Se il tuo compilatore e` aggiornato allo standard, puoi usare
un costruttore-template: dichiarato come
    template<class iter>
    Poli(iter begin, iter end);
implementato come
    template<class iter>
    Poli::Poli(iter begin, iter end)
    {
        for(iter i = begin; i != end; ++i)
            // inserisci *i opportunamente
    }
il che ti da` piu` flessibilita`.
La dichiarazione che desideri prendera` dunque la forma:
    monomio elenco[] = { monomio1, monomio2, monomio3 };
    Poli identificatore(elenco, elenco+3);
o simili.
Alex

sei stato chiarissimo
grazie