Compartir tecnología

error - múltiples definiciones

2024-07-12

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

error - múltiples definiciones

Su problema es que encontró un error "la referencia a 'datos' es ambigua" en su código C++. Este error suele ocurrir cuando intenta hacer referencia a una variable que tiene múltiples definiciones.

En su código, define una variable global datos. Al mismo tiempo, también hay una plantilla de función llamada datos en la biblioteca estándar de C++. Cuando usa datos en la función fib, el compilador no puede determinar si desea hacer referencia a la variable global data o std::data, por lo que genera un error ambiguo.

Para resolver este problema, puede cambiar el nombre de los datos de la variable global o especificar explícitamente que desea hacer referencia a la variable global al llamar.

Solución 1: cambiar el nombre de la variable global

PPP-CPP

#incluir<iostream>

utilizando el espacio de nombres std;

 

int mod=1e9+7;

int fibData[10000]; //Cambiar nombre

 

entero fib(entero n){

si (n==1||n==2){fibData[n]=1;devuelve fibData[n];}

si (fibData[n]!=0)devuelve fibData[n];

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

devuelve fibData[n];

 

int principal() {

entero t;

cin&gt;&gt;t;

para(int i=0;i

entero n;

cin&gt;&gt;n;

cuenta&lt;

  } 

devuelve 0;

}

Solución 2: especifique explícitamente que desea hacer referencia a una variable global al llamar

PPP-CPP

#incluir<iostream>

utilizando el espacio de nombres std;

 

int mod=1e9+7;

int datos[10000];

 

entero fib(entero n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Agrega '::' delante para especificar claramente que deseas hacer referencia al variable global

si(::datos[n]!=0)devuelve ::datos[n];

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

devolver ::datos[n];

 

int principal() {

entero t;

cin&gt;&gt;t;

para(int i=0;i

entero n;

cin&gt;&gt;n;

cuenta&lt;

  } 

devuelve 0;

}