termozeta
05-08-2005, 09:47
Ciao a tutti,
ho un problema con l’utilizzo di un vettore in una classe,vi spiego :
io ho creato una classe che utilizza il vettore di un’altra classe(che ho creato sempre io) cosi’:
class prova
{
private:
vettore<int> v;
public:
prova(int lunghezza){v.inizializza();//è una funzione che alloca memoria dinamica al vettore e lo inizializza con tutti zeri}
.
.
}
questa classe,però,vorrei poterla usare anche se do lunghezza=0 nel senso che,il vettore potrebbe anche non esistere(vabbè considerate che il vettore esiste o meno a seconda che ,per esempio, un nodo abbia dei padri o meno,quindi se ce li ha il vettore lo riempio con gli indici dei padri senno non esiste).Visual studio c++ non accetta una cosa del genere e quando pongo lunghezza=0 segnala un errore di compilazione.Ho provato anche a mettere nella dichiarazione del costruttore del vettore(nella classe vettore) un qualcosa del genere:
if(lunghezza)
{
alloca la memoria dinamica
}
else
v=NULL;
ma continua a darmi errore.
Qualcuno ha qualche idea o consiglio da darmi?Vi ringrazio in anticipo
ho un problema con l’utilizzo di un vettore in una classe,vi spiego :
io ho creato una classe che utilizza il vettore di un’altra classe(che ho creato sempre io) cosi’:
class prova
{
private:
vettore<int> v;
public:
prova(int lunghezza){v.inizializza();//è una funzione che alloca memoria dinamica al vettore e lo inizializza con tutti zeri}
.
.
}
questa classe,però,vorrei poterla usare anche se do lunghezza=0 nel senso che,il vettore potrebbe anche non esistere(vabbè considerate che il vettore esiste o meno a seconda che ,per esempio, un nodo abbia dei padri o meno,quindi se ce li ha il vettore lo riempio con gli indici dei padri senno non esiste).Visual studio c++ non accetta una cosa del genere e quando pongo lunghezza=0 segnala un errore di compilazione.Ho provato anche a mettere nella dichiarazione del costruttore del vettore(nella classe vettore) un qualcosa del genere:
if(lunghezza)
{
alloca la memoria dinamica
}
else
v=NULL;
ma continua a darmi errore.
Qualcuno ha qualche idea o consiglio da darmi?Vi ringrazio in anticipo