Teknologian jakaminen

bug - useita määritelmiä

2024-07-12

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

bug - useita määritelmiä

Ongelmasi on, että kohtasit C++-koodissasi "viittaus "data" on epäselvä" -virheen. Tämä virhe ilmenee yleensä, kun yrität viitata muuttujaan, jolla on useita määritelmiä.

Koodissasi määrität globaalin muuttujan tiedot. Samalla C++-standardikirjastossa on myös data-niminen funktiomalli. Kun käytät dataa fib-funktiossa, kääntäjä ei voi määrittää, haluatko viitata globaaliin muuttujan dataan vai std::dataan, joten se antaa epäselvän virheen.

Tämän ongelman ratkaisemiseksi voit muuttaa globaalin muuttujan datan nimeä tai määrittää nimenomaisesti, että haluat viitata globaaliin muuttujaan kutsuttaessa.

Ratkaisu 1: Muuta globaalin muuttujan nimi

cpp

#sisältää<iostream>

käyttäen nimiavaruutta std;

 

int mod=1e9+7;

int fibData[10000] //Vaihda nimi

 

int fib(int n){

if(n==1||n==2){fibData[n]=1;palauta fibData[n];}

if(fibData[n]!=0)return fibData[n];

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

palauttaa fibData[n];

 

int main() {

int t;

cin&gt;&gt;t;

for(int i=0;i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

paluu 0;

}

Ratkaisu 2: Määritä nimenomaisesti, että haluat viitata globaaliin muuttujaan kutsuessasi

cpp

#sisältää<iostream>

käyttäen nimiavaruutta std;

 

int mod=1e9+7;

int data[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Lisää '::' eteen määrittääksesi selvästi, että haluat viitata globaali muuttuja

if(::data[n]!=0)return ::data[n];

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

paluu ::data[n];

 

int main() {

int t;

cin&gt;&gt;t;

for(int i=0;i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

paluu 0;

}