Salve a tutti,
sto scrivendo un programma in C++ e mi sono perso un po' nei meandri dei puntatori tra la dichiarazione delle variabili di una struttura ed i passaggi alle funzioni...cerco di spiegarmi meglio con parti semplificate del codice per focalizzare il problema...
Ho dichiarato due strutture nell'header:
typedef struct ind_st /* an individual */
{
int index;
double *parameters;
} ind;
typedef struct pop_st /* a population */
{
int size;
ind **ind_array;
} pop;
Che vengono inizializzate da un'apposita funzione (per brevità inserisco solo l'inizializzazione della prima):
ind* create_ind(int Npar)
/* Allocates memory for one individual. */
{
ind *p_ind;
assert(Npar >= 0);
p_ind = (ind*) chk_malloc(sizeof(ind));
p_ind->index = NULL;
p_ind->parameters = (double*) chk_malloc(Npar * sizeof(double));
for (int i = 0; i < Npar; i++)
p_ind->parameters[i] = NULL;
return (p_ind);
}
All'interno del programma vorrei richiamare una funzione del tipo: (Npar è una variabile globale):
ind* function(ind *ind_1, ind *ind_2)
{
ind *ind_new = create_ind(Npar);
.... operazioni su ind_1 e ind_2 per assegnare i corretti valori alle variabili di ind_new
return ind_new;
}
e la richiamo in questo modo:
pop_new->ind_array[i+1] = function(pop_old->ind_array[j], pop_new->ind_array[k]);
Ora, all'interno della funzione tutto funziona bene, nel senso che le variabili di "ind_new" hanno i valori corretti appena prima del "return", però queste non vengono passate a "pop_new->ind_array[i+1]"
Dove sta l'errore?