Condivisione della tecnologia

bug: definizioni multiple

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

bug: definizioni multiple

Il tuo problema è che hai riscontrato un errore "il riferimento a 'dati' è ambiguo" nel tuo codice C++. Questo errore si verifica in genere quando si tenta di fare riferimento a una variabile con più definizioni.

Nel tuo codice definisci una variabile globale data. Allo stesso tempo, c'è anche un modello di funzione denominato data nella libreria standard C++. Quando si utilizzano i dati nella funzione fib, il compilatore non è in grado di determinare se si desidera fare riferimento alla variabile globale data o std::data, quindi restituisce un errore ambiguo.

Per risolvere questo problema, è possibile modificare il nome dei dati della variabile globale o specificare esplicitamente che si desidera fare riferimento alla variabile globale durante la chiamata.

Soluzione 1: modificare il nome della variabile globale

cpp

#includere<iostream>

utilizzando lo spazio dei nomi std;

 

int mod=1e9+7;

int fibData[10000]; //Cambia nome

 

int fib(int n){

se(n==1||n==2){fibData[n]=1;ritorna fibData[n];}

se(fibData[n]!=0)restituisci fibData[n];

fibData[n]=fibData[n-1]+fibData[n-2];

restituisci fibData[n];

 

int principale() {

int t;

cin&gt;&gt;t;

per(int i=0;i

interno n;

cin&gt;&gt;n;

conto

  } 

restituisci 0;

}

Soluzione 2: specificare esplicitamente che si desidera fare riferimento a una variabile globale durante la chiamata

cpp

#includere<iostream>

utilizzando lo spazio dei nomi std;

 

int mod=1e9+7;

int dati[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Aggiungi '::' davanti per specificare chiaramente che vuoi fare riferimento al variabile globale

se(::dati[n]!=0)ritorna ::dati[n];

::dati[n]=::dati[n-1]+::dati[n-2];

ritorno::data[n];

 

int principale() {

int t;

cin&gt;&gt;t;

per(int i=0;i

interno n;

cin&gt;&gt;n;

conto

  } 

restituisci 0;

}