PDA

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?

oregon
19-07-2016, 09:39
Perché

void *

??

user1989
19-07-2016, 09:55
Perché

void *

??

Essendo dinamico pensavo volesse void *

oregon
19-07-2016, 10:00
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 :(

oregon
19-07-2016, 10:16
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();

oregon
19-07-2016, 11:42
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]);

Loading