PDA

View Full Version : C++, Classi: ho bisogno di un aiuto...


Jigen-x
21-05-2004, 22:42
Ciao.
Da qualche settimana sto sfogliando alcuni manuali di C++ per scrivere un codice che gestisca dei Files di Risultati.
I risultati contengono forze, spostamenti, deformazioni meccaniche, etichette e richiedono un certo numero di operazioni (post-processing).

E' possibile definire in C++ una classe "generica" che contenga

1) una stringa o un intero che identifica l'oggetto
2) un numero intero N (e non dichiarato a priori) di vettori di dimensioni diverse
3) dei metodi generici

per poi derivare delle classi figlie che contengano

1) una stringa
2) un numero intero < N di vettori
3) dei metodi ad hoc

??

Ho una conoscenza ancora superficiale del C++, ma vorrei capire se nella classe posso (e come) definire un numero non noto a tempo di compilazione di array.

Grazie, attendo consigli!!

ri
21-05-2004, 23:56
class Generica
{
public:
Generica(const char* nome) : _nome(nome)
{}

virtual ~Generica()
{}

virtual void metodo1() = 0;
virtual int metodo2(int p) = 0;
virtual float metodo3() = 0;

const char* nome() { return _nome.c_str(); }

protected:
std::vector< std::vector<int> > _dati;

private:
std::string _nome;
};

class Figlio1 : public Generica
{
public:
Figlio1 : Generica("figlio1")
{}

void metodo1()
{
cout << "metodo 1 dell'oggetto " << nome();
}

int metodo2(int p)
{
cout << "metodo 2 dell'oggetto " << nome();
}

float metodo3()
{
cout << "metodo3 dell'oggetto " << nome();
}
};

class Figlio2 : public Generica
{
public:
Figlio2 : Generica("figlio2")
{}

void metodo1()
{
cout << "metodo 1 dell'oggetto " << nome();
}

int metodo2(int p)
{
cout << "metodo 2 dell'oggetto " << nome();
}

float metodo3()
{
cout << "metodo3 dell'oggetto " << nome();
}
};

Jigen-x
22-05-2004, 10:07
Grazie!
ad essere sincero non ho ancora tutti i mezzi per capire il tuo codice (sto ancora studiando), ma me lo sono salvato!

ciauz

anx721
22-05-2004, 12:43
Ma con:


protected:
std::vector< std::vector<int> > _dati;

non dichiari un vettore di int?


Non si dovrebbe invece dichiarare un vettore di vettori?

cionci
22-05-2004, 15:20
std::vector< std::vector<int> > _dati;

Questo è proprio un vettore di vettori ;)

ri
22-05-2004, 20:06
ecco ha risposto lui (che giornata oggi, sto respirando ora...)

scrivi cosa non ti è chiaro che te lo spieghiamo, in questo momento non ho proprio voglia di spiegarlo linea per linea scusa ^^'

anx721
22-05-2004, 21:55
Originariamente inviato da cionci
std::vector< std::vector<int> > _dati;

Questo è proprio un vettore di vettori ;)

Si, hai ragione, avevo letto

std::vector<int>

Jigen-x
23-05-2004, 20:33
non ti preoccupare per le spiegazioni e i commenti, me la vedo io.
mi basta sapere che se riesce a farlo e avere una traccia su cui lavorare.:D