Partage de technologie

bug - plusieurs définitions

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&gt;&gt;t;

pour(int i=0;i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

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&gt;&gt;t;

pour(int i=0;i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

retourner 0;

}