2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
bug - plusieurs définitions
Votre problème est que vous avez rencontré une erreur « la référence aux « données » est ambiguë » dans votre code C++. Cette erreur se produit généralement lorsque vous essayez de référencer une variable comportant plusieurs définitions.
Dans votre code, vous définissez une variable globale data. En même temps, il existe également un modèle de fonction nommé data dans la bibliothèque standard C++. Lorsque vous utilisez data dans la fonction fib, le compilateur ne peut pas déterminer si vous souhaitez faire référence à la variable globale data ou à std::data, il génère donc une erreur ambiguë.
Pour résoudre ce problème, vous pouvez modifier le nom de la variable globale data ou spécifier explicitement que vous souhaitez référencer la variable globale lors de l'appel.
Solution 1 : modifier le nom de la variable globale
cpp
#inclure<iostream>
en utilisant l'espace de noms std;
int mod=1e9+7;
int fibData[10000]; //Changer le nom
int fib(int n){
si(n==1||n==2){fibData[n]=1;retourne fibData[n];}
si(fibData[n]!=0)retourne fibData[n];
fibData[n]=fibData[n-1]+fibData[n-2];
retourner fibData[n];
}
int main() {
int t;
cin>>t;
pour(int i=0;i
int n;
cin>>n;
cout<
}
retourner 0;
}
Solution 2 : spécifiez explicitement que vous souhaitez référencer une variable globale lors de l'appel
cpp
#inclure<iostream>
en utilisant l'espace de noms std;
int mod=1e9+7;
int données[10000];
int fib(int n){
if(n==1||n==2){::data[n]=1;return ::data[n];} // Ajoutez '::' devant pour spécifier clairement que vous souhaitez référencer le variable globale
si(::data[n]!=0)retourne ::data[n];
::données[n]=::données[n-1]+::données[n-2];
retour ::données[n];
}
int main() {
int t;
cin>>t;
pour(int i=0;i
int n;
cin>>n;
cout<
}
retourner 0;
}