PDA

Visualizza la versione completa : [C] Funzioni su struct


Ashardalon
03-03-2014, 11:09
Salve a tutti,
sto convertendo un programma da C++ in C per l'addestramento di reti neurali.
Ho convertito le classi in struct, usato puntatori etc.

Tuttavia ho alcune funzioni che richiamano altre funzioni e qui mi nasce un problema...
Definisco la struttura:


typedef struct
{
float *prob;
int m_iCityCount;
int *AllowedCity;
int *tabu;
float m_dLength;
float m_dShortest;
}ant;


Funzione che ne chiama una seconda:


void Clear(ant* a)
{
a->m_dLength=0;
int i;
for(i=0;i<iCityCount;i++)
{
a->prob[i]=0;
a->AllowedCity[i]=1;
}
i=(*a).tabu[iCityCount-1];
a->m_iCityCount=0;
addcity(&a, i); //2
}

che è:


void addcity(ant* a,int city)
{
a->tabu[(*a).m_iCityCount]=city;
a->m_iCityCount=(*a).m_iCityCount+1;
a->AllowedCity[city]=0;
}

Questo è solo un esempio...ho altri casi simili. Comunque mi restituisce questi errori:

warning: conflicting types for 'addcity' [enabled by default]

//2:
warning: passing argument 1 of 'addcity' from incompatible pointer type [enabled by default]|
note: expected 'struct ant *' but argument is of type 'struct ant **'

Qualcuno mi può aiutare per risolvere questi errori? Premetto che C non lo tocco da anni quindi magari mi sfugge qualcosa di banale...

- Francesco

oregon
03-03-2014, 14:02
Beh, C o C++ per queste cose non differiscono ...

La addcity si attende un puntatore ad ant e nella prima hai già un puntatore ad ant ... quindi basta

addcity(a, i);

Loading