View Full Version : [C++] La STL ed i vector
fede_bambi
07-12-2007, 21:33
Ho creato una mia classe e sono riuscita a memorizzarla correttamente all'interno di un vector (vettore dinamico fornito dalla STL) ma mi sono accorta che in realtà dovrei salvare nel vettore dei puntatori ai membri della mia classe. Il compilatore mi dà un sacco di errori.
May you help me?
Ho creato una mia classe e sono riuscita a memorizzarla correttamente all'interno di un vector (vettore dinamico fornito dalla STL) ma mi sono accorta che in realtà dovrei salvare nel vettore dei puntatori ai membri della mia classe. Il compilatore mi dà un sacco di errori.
May you help me?
uhmm posta un esempio di quello che stai cercando di fare...
fede_bambi
07-12-2007, 22:02
Ho creato una classe di tipo
class tizio{
private:
int nazionalita;
int carta_identita;
float strategia[5];
....
public:
int get_nazionalita();
int get_carta_identita();
float get_strategia(int paese);
....
friend ostream &operator<<(ostream &stream, tizio a);
friend bool operator<(tizio a, tizio b);
friend bool operator==(tizio a, tizio b);
Grazie a queste ultime tre funzioni sono riuscita a memorizzare in un vettore dei membri di tizio per costruire un'altra classe:
class piazza
{
private:
int targa_x;
int targa_y;
vector< class tizio> piazzati;
Il problema è che mi sono accorta che la class piazza, per funzionare correttamente, non ha bisogno di un vettore di Tizio ma di un vettore di puntatori a Tizio.
Non ho idea di come fare
forse vuoi fare questo:
vector<tizio *> piazzati;
poi devi allocare oggetti tizio e fare il push back del puntatore di ognuno.
tizio *ptizio = new tizio();
piazzati.push_back(ptizio);
ovviamente poi ricordati di dellocare tutto.
fede_bambi
07-12-2007, 22:24
Ma tutto questo lo devo fare all'interno della dichiarazione della classe "piazza" che utilizza Vector?
Grazie
Ma tutto questo lo devo fare all'interno della dichiarazione della classe "piazza" che utilizza Vector?
Grazie
Dipende da quello che vuoi realizzare...ad esempio se vuoi che si possano inserire tizio in piazza:
class piazza
{
private:
vector< tizio * > piazzati;
public:
piazza();
void inserisci(tizio *t);
....
...
...
}
void piazza::inserisci(tizio *t)
{
piazzati.push_Back(t);
}
Nel codice se hai già un tizio:
...
...
...
piazza p;
p.inserisci(&t);
oppure se vuoi inserire al volo un altro tizio lo puoi creare tramite:
p.inserisci(new tizio("xxx", "yyy", 1111, 222));
fede_bambi
08-12-2007, 10:16
Avevo provato a fare nel modo suggeritomi da Cionci, il compilatore mi dava errori, ma può benissimo darsi che tali errori siano semplici inesattezze... ora che so che la cosa è fattibile insisterò.
Grazie mille.
Ps Non è che conosci il Papucci? Mi sembra di averti già sentito nominare nel mondo reale!
Papucci, mmmm no... Di dove sei ?
Comunque se hai errori posta il codice e vediamo di darci un'occhiata...
fede_bambi
08-12-2007, 10:29
Grazie! prima però cerco di dargli una forma migliore (nel correggere il codice che usavo prima ho fatto un sacco di errori).
Io sono di Torino, ma in realtà praticamente sono di stanza a Viareggio, la persona di cui ti parlo è di Campi, canta in un gruppo che fa conver dei Korn
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.