Symbol(s) not found

di il
2 risposte

Symbol(s) not found

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.

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte