Compartilhamento de tecnologia

bug - múltiplas definições

2024-07-12

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

bug - múltiplas definições

Seu problema é que você encontrou um erro "referência a 'dados' é ambígua" em seu código C++. Este erro geralmente ocorre quando você tenta fazer referência a uma variável que possui múltiplas definições.

Em seu código, você define uma variável global data. Ao mesmo tempo, há também um modelo de função chamado data na biblioteca padrão C++. Quando você usa dados na função fib, o compilador não pode determinar se você deseja se referir à variável global data ou std::data, portanto, ocorre um erro ambíguo.

Para resolver esse problema, você pode alterar o nome dos dados da variável global ou especificar explicitamente que deseja fazer referência à variável global ao chamar.

Solução 1: altere o nome da variável global

cpp

#incluir<iostream>

usando namespace std;

 

int mod=1e9+7;

int fibData[10000]; //Alterar nome

 

int fib(int n){

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

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

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

retornar fibData[n];

 

int principal() {

int t;

cin&gt;&gt;t;

para(int i=0;i

int n;

cin&gt;&gt;n;

corte&lt;

  } 

retornar 0;

}

Solução 2: especifique explicitamente que deseja fazer referência a uma variável global ao chamar

cpp

#incluir<iostream>

usando namespace std;

 

int mod=1e9+7;

dados int[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Adicione '::' na frente para especificar claramente que você deseja fazer referência ao variável global

se(::dados[n]!=0)retornar ::dados[n];

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

retornar ::dados[n];

 

int principal() {

int t;

cin&gt;&gt;t;

para(int i=0;i

int n;

cin&gt;&gt;n;

corte&lt;

  } 

retornar 0;

}