プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
バグ - 複数の定義
あなたの問題は、C++ コードで「'data' への参照があいまいです」エラーが発生したことです。このエラーは通常、複数の定義がある変数を参照しようとすると発生します。
コードでは、グローバル変数 data を定義します。同時に、C++ 標準ライブラリには data という名前の関数テンプレートも存在します。 fib 関数で data を使用する場合、コンパイラはグローバル変数 data を参照するのか、std::data を参照するのかを判断できないため、あいまいなエラーが発生します。
この問題を解決するには、グローバル変数データの名前を変更するか、呼び出し時にグローバル変数を参照することを明示的に指定します。
解決策 1: グローバル変数名を変更する
cpp
#含む<iostream>
名前空間 std を使用します。
整数 mod = 1e9 + 7;
int fibData[10000]; //名前を変更します
int fib(int n){
if(n==1||n==2){fibData[n]=1;fibData[n]を返します;}
if(fibData[n]!=0)fibData[n]を返します。
fibData[n]=fibData[n-1]+fibData[n-2];
fibData[n]を返します。
}
int main() {
整数t;
cin>>t;
for(int i=0;i
整数n;
cin>>n;
カウント<
}
0を返します。
}
解決策 2: 呼び出し時にグローバル変数を参照することを明示的に指定する
cpp
#含む<iostream>
名前空間 std を使用します。
整数 mod = 1e9 + 7;
整数データ[10000];
int fib(int n){
if(n==1||n==2){::data[n]=1;return ::data[n];} // 先頭に「::」を追加して、参照したいことを明確に指定しますグローバル変数
if(::data[n]!=0) ::data[n] を返します。
::データ[n]=::データ[n-1]+::データ[n-2];
::data[n]を返します。
}
int main() {
整数t;
cin>>t;
for(int i=0;i
整数n;
cin>>n;
カウント<
}
0を返します。
}