Salve, ho un problema in compilazione. L'errore che g++ 4.2.1 mi riporta è il seguente:
Undefined symbols:
"pescaCarte(bool (*) [10], bool (*) [10], bool*, bool*, int&, int&)", referenced from:
_main in ccLEhqvh.o
_main in ccLEhqvh.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
e la porzione di codice cui si riferice è questa:
void pescaCarta(bool cartePlayerCorrente[][10], bool carteAvversario[][10], bool rimastePlayerCorrente[], bool rimasteAvversario[], int &numCartePlayerCorrente, int &numCarteAvversario)
{
int cartaPescata, rigaTrovata;
do
{
cartaPescata = rand() % 10; // Genera un numero finché non ne esce uno utile ai fini del gioco, cioè uno che corrisponde ad un indice TRUE dell'array delle carte rimaste all'avversario
if(rimasteAvversario[cartaPescata])
{
for(int i = 0; i < 4; i++)
if(carteAvversario[i][cartaPescata])
{
carteAvversario[i][cartaPescata] = false;
rimasteAvversario[cartaPescata] = false;
numCarteAvversario--;
rigaTrovata = i;
}
cartePlayerCorrente[rigaTrovata][cartaPescata] = true; // Il player corrente acquista la carta tolta all'avversario
rimastePlayerCorrente[cartaPescata] = true; // La nuova carta diventa l'indice per un TRUE nell'array delle rimaste
numCartePlayerCorrente++;
}
}
while(!rimasteAvversario[cartaPescata]);
}
Il codice mi sembra corretto a livello logico e semantico; il prototipo è stato dichiarato, non si fa uso di cose strane se non bool e interi, matrici ed array. La cosa strana è che se questa funzione non la utilizzo da nessuna parte ma mi limito a scriverla soltanto, in compilazione non succede un bel niente. Nello specifico, la invoco dal main così:
pescaCarte(cartePlayerUno, cartePlayerDue, rimastePlayerUno, rimastePlayerDue, numCartePlayerUno, numCartePlayerDue);
ed in un altro modo sostanzialmente analogo, ed i tipi delle variabili passate come parametri attuali sono coerenti con i tipi dei parametri formali.
Qualcuno saprebbe dirmi a cosa si riferisce l'errore riportato dal compilatore?
Grazie anticipatamente.