informasi kontak saya
Surat[email protected]
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>>t;
untuk (int i=0;i
bahasa inggris
bahasa inggris>>n;
menghitung<
}
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>>t;
untuk (int i=0;i
bahasa inggris
bahasa inggris>>n;
menghitung<
}
kembali 0;
}