[C++] Passare array costante a funzione

di il
8 risposte

[C++] Passare array costante a funzione

Salve, sto incontrando un problema nel passare a una funzione un array dichiarato così fuori dal main:
const int cilindroUnoSTD[26] = { 24, 11, 5, 10, 18, 15, -4, 1, 10, 2, -5, 8, -11, 1, 7, 2, -16, -13, 5, -13, 5, -6, -12, -20, -8, -16 };
con questa funzione qua
void impostaCilindro(int cilindro[], int cilindroSTD[])
{
    // I cilindri vengono inizialmente preparati come copie dei cilindri standard.

    for (int i = 0; i < 26; i++)
        cilindro[i] = cilindroSTD[i];
}
che dovrebbe semplicemente copiarmi il contenuto di un array in un altro. L'errore che il compilatore mi dà è questo:
error: invalid conversion from ‘const int*’ to ‘int*’
error:   initializing argument 2 of ‘void impostaCilindro(int*, int*)’
Cosa c'è che non va?

Grazie mille anticipatamente!

8 Risposte

  • Re: [C++] Passare array costante a funzione

    
    void impostaCilindro(int cilindro[], const int cilindroSTD[])
    
  • Re: [C++] Passare array costante a funzione

    Provato, ma dà lo stesso errore anche così...
  • Re: [C++] Passare array costante a funzione

    Come la chiami la funzione?
  • Re: [C++] Passare array costante a funzione

    impostaCilindro(cilindroUno, cilindroUnoSTD);
    la chiamo da dentro il main; ovviamente cilindroUno esiste ed è un array int di dimensione 26 dichiarato dentro il main
  • Re: [C++] Passare array costante a funzione

    Questo si compila.
    
    #include <iostream>
    
    void impostaCilindro(int cilindro[], const int cilindroSTD[]);
    
    
    int main() 
    {
    	const int cilindroUnoSTD[26] = { 24, 11, 5, 10, 18, 15, -4, 1, 10, 2, -5, 8, -11, 1, 7, 2, -16, -13, 5, -13, 5, -6, -12, -20, -8, -16 };
    	int cilindroUno[26];
    	
    	impostaCilindro(cilindroUno, cilindroUnoSTD);
    }
    
    void impostaCilindro(int cilindro[], const int cilindroSTD[])
    {
    	// I cilindri vengono inizialmente preparati come copie dei cilindri standard.
    
    	for (int i = 0; i < 26; i++)
    		cilindro[i] = cilindroSTD[i];
    }
    
    
    sicuro che il tuo codice è come questo?
  • Re: [C++] Passare array costante a funzione

    No, è come questo:
    #include <iostream>
    
    const int cilindroUnoSTD[26] = { 24, 11, 5, 10, 18, 15, -4, 1, 10, 2, -5, 8, -11, 1, 7, 2, -16, -13, 5, -13, 5, -6, -12, -20, -8, -16 };
    
    void impostaCilindro(int cilindro[], const int cilindroSTD[]);
    
    int main() 
    {
       int cilindroUno[26];
       
       impostaCilindro(cilindroUno, cilindroUnoSTD);
    
       return 0;
    }
    
    void impostaCilindro(int cilindro[], const int cilindroSTD[])
    {
       // I cilindri vengono inizialmente preparati come copie dei cilindri standard.
    
       for (int i = 0; i < 26; i++)
          cilindro[i] = cilindroSTD[i];
    }
    
    L'array lo dichiaro come globale, fuori da qualsiasi funzione.
  • Re: [C++] Passare array costante a funzione

    Da me si compila sempre.
  • Re: [C++] Passare array costante a funzione

    Argh!
    Il mio compilatore è g++ 4.2.1. Quale hai usato per compilare?
Devi accedere o registrarti per scrivere nel forum
8 risposte