codice:class Poligono { public: .... double * getArray(){ return array;} void setArray(double * a) { if(array) free(array); array=(double*) calloc (numLati,sizeof(double)); memcpy(array,a,numLati*sizeof(double)); } void impostaLati(double a , int i) { if(!array) array=(double*) calloc (numLati,sizeof(double)); array[i]=a; } .... };
Ultima modifica di user1989; 19-07-2016 a 12:48
Ricordati di mettere a NULL il puntatore nel costruttore altrimenti potresti avere problemi ... e libera la memoria allocata se non serve più ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Buongiorno oregon,
un altro problemino...
Ho tre classi figlie di Poligono..
In ognuna di queste ho la calcolaArea()
codice:class Triangolo: public Poligono { public: Triangolo(); double calcolaArea(); }La utilizza in una funzione in cui mi devo riempire un array così:codice:class Poligono { ... virtual double calcolaArea(){ } }
Mi da Access Violation come errore in fase di esecuzione del programma...codice:.. if(!aree) aree=(double*) calloc(cont,sizeof(double); for(..) aree[i]=poligoni[i].calcolaArea();
Da quanto ho capito in fase di Debug, il problema è alla riga
codice:aree[i]=poligoni[i].calcolaArea();
Sempre con il debug, quando hai l'errore, dovresti vedere quanto vale
i
aree[i]
poligoni[i]
No MP tecnici (non rispondo nemmeno!), usa il forum.