Berbagi teknologi

bug - banyak definisi

2024-07-12

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

bug - banyak definisi

Masalah Anda adalah Anda mengalami kesalahan "referensi ke 'data' ambigu" dalam kode C++ Anda. Kesalahan ini biasanya terjadi ketika Anda mencoba mereferensikan variabel yang memiliki banyak definisi.

Dalam kode Anda, Anda mendefinisikan variabel global data. Pada saat yang sama, ada juga templat fungsi bernama data di pustaka standar C++. Saat Anda menggunakan data dalam fungsi fib, kompiler tidak dapat menentukan apakah Anda ingin merujuk ke variabel global data atau std::data, sehingga memberikan kesalahan yang ambigu.

Untuk mengatasi masalah ini, Anda dapat mengubah nama data variabel global, atau secara eksplisit menentukan bahwa Anda ingin mereferensikan variabel global saat memanggil.

Solusi 1: Ubah nama variabel global

cpp

#termasuk<iostream>

menggunakan namespace std;

 

int mod=1e9+7;

int fibData[10000]; //Ganti nama

 

int fib(int n){

jika(n==1||n==2){fibData[n]=1;kembalikan fibData[n];}

jika (fibData[n]!=0) kembalikan fibData[n];

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

kembalikan fibData[n];

 

int utama() {

int ke-t;

cin&gt;&gt;t;

untuk (int i=0;i

bahasa inggris

bahasa inggris&gt;&gt;n;

menghitung&lt;

  } 

kembali 0;

}

Solusi 2: Tentukan secara eksplisit bahwa Anda ingin mereferensikan variabel global saat memanggil

cpp

#termasuk<iostream>

menggunakan namespace std;

 

int mod=1e9+7;

data int[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Tambahkan '::' di depan untuk menentukan dengan jelas bahwa Anda ingin mereferensikan variabel global

jika(::data[n]!=0)kembalikan ::data[n];

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

kembali ::data[n];

 

int utama() {

int ke-t;

cin&gt;&gt;t;

untuk (int i=0;i

bahasa inggris

bahasa inggris&gt;&gt;n;

menghitung&lt;

  } 

kembali 0;

}