bug——多重定义

bug------多重定义
你的问题是在C++代码中遇到了"reference to 'data' is ambiguous"的错误。这个错误通常发生在你尝试引用一个具有多重定义的变量时。

在你的代码中,你定义了一个全局变量data,同时,C++标准库中也有一个名为data的函数模板。当你在fib函数中使用data时,编译器无法确定你是想引用全局变量data还是std::data,因此它给出了一个模糊的错误。

为了解决这个问题,你可以改变全局变量data的名称,或者在调用时明确指定你要引用的是全局变量。

解决方案一:更改全局变量名称

cpp

#include <iostream>

using namespace std;

int mod=1e9+7;

int fibData[10000]; // 更改名称

int fib(int n){

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

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

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

return fibData[n];

}

int main() {

int t;

cin>>t;

for(int i=0;i<t;i++){

int n;

cin>>n;

cout<<fib[n];

}

return 0;

}

解决方案二:在调用时明确指定你要引用的是全局变量

cpp

#include <iostream>

using namespace std;

int mod=1e9+7;

int data[10000];

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // 在前面加上 '::' 明确指定你要引用的是全局变量

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

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

return ::data[n];

}

int main() {

int t;

cin>>t;

for(int i=0;i<t;i++){

int n;

cin>>n;

cout<<fib[n];

}

return 0;

}

相关推荐
我们的五年1 天前
【Qt】Bug:findChildren找不到控件
开发语言·qt·bug
seiyaaa1 天前
Claude Opus solved my white whale bug today that I couldn‘t find in 4 years
bug
六天测试工程师2 天前
做好 4个基本动作,拦住性能优化改坏原功能的bug
服务器·性能优化·bug
良辰美景好时光2 天前
keepalived定制日志bug
linux·运维·bug
CYRUS STUDIO2 天前
FART 自动化脱壳框架一些 bug 修复记录
android·bug·逆向·fart·脱壳
布谷歌5 天前
一个Mybatisplus组件扫描不当引起的bug:弄巧成拙,认真的锅,自我怀疑
java·开发语言·bug
yunbao00_5 天前
测试概念 和 bug
bug
笨手笨脚の6 天前
【Bug】定时任务中 Jpa Save 方法失效
java·开发语言·bug·事务·jpa
daiyang123...6 天前
今天遇到的bug
bug
Ha-gd6 天前
测试Bug篇
bug