Visualizza la versione completa : [c++] get e set array di double
user1989
19-07-2016, 09:37
Salve :ciauz:
Ho un array di double dichiarato private, di conseguenza per poterlo usare dovrei implementare dei metodi get e set.
class MiaClasse
{
private:
...
double * array;
public:
double * getArray(){ return array;}
void *setArray(double *a){ array=a;}
Ho qualche dubbio a riguardo, infatti quando vado ad utilizzarle mi da errore...
Chi mi da un suggerimento?
user1989
19-07-2016, 09:55
Perché
void *
??
Essendo dinamico pensavo volesse void *
Essendo dinamico pensavo volesse void *
Dinamico?
La set non restituisce nulla ... quindi ...
user1989
19-07-2016, 10:03
for(int i=0; i<poligoni[cont].getNumLati(); i++)
{
AnsiString s=Memo->Lines->Strings[i];
poligoni[cont].setArray(s.ToDouble());
}
facendo una cosa simile dice: Incompatible type conversion
Oppure:
for(int i=0; i<poligoni[cont].getNumLati(); i++)
Memo->Lines->Add(poligoni[cont].getArray());
cannot convert double to unicodestring
In pratica in input riempio questo array di double allocato di dimensione numero lati che rappresentano la misura di ogni lato del mio poligono.
user1989
19-07-2016, 10:05
va bene corretto, grazie... ma il problema rimane :(
Ma ToDouble() non restituisce un puntatore ad un array di double ma un semplice double
user1989
19-07-2016, 10:23
Ma ToDouble() non restituisce un puntatore ad un array di double ma un semplice double
si, in sostanza sarebbe, se fosse membro pubblico:
for..
poligoni[cont].array[i]=s.ToDouble();
Stai facendo confusione ... array[i] è un elemento dell'array non tutto l'array.
Esegui la setArray(array)
quando hai a disposizione l'array, alla fine della for. E occhio che quell'array non sia locale altrimenti non puoi utilizzare il relativo puntatore.
user1989
19-07-2016, 12:00
Stai facendo confusione ... array[i] è un elemento dell'array non tutto l'array.
Esegui la setArray(array)
quando hai a disposizione l'array, alla fine della for. E occhio che quell'array non sia locale altrimenti non puoi utilizzare il relativo puntatore.
Ho risolto cosi:
impoArray prende in input il valore double e l indice di dove inserirlo...
for()
{
AnsiString s=Memo->Lines->Strings[i];
poligoni[cont].impoArray(s.ToDouble(),i);
}
e cosi:
double *ll= poligoni[cont].getArray();
for ...
Memo->Lines->Add(ll[i]);