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;

}

相关推荐
酷酷-13 小时前
彩虹易支付最新版源码及安装教程(修复BUG+新增加订单投诉功能)
html·php·bug
佛系小嘟嘟21 小时前
Android-由switch-case和view.getId()引起的bug:错误:需要常量表达式 的解决办法
android·bug
未来可期LJ21 小时前
【测试-BUG篇】软件测试的BUG知识你了解多少呢?
软件测试·bug
软件测试很重要21 小时前
追梦无Bug的软件世界
bug
我又来搬代码了2 天前
【Android】【bug】ImageView设置scaleType不生效的问题
android·bug
吴恩达亲传弟子2 天前
【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误
linux·ubuntu·bug
john_hjy2 天前
8. Bug 与 Error
javascript·bug
鸽芷咕3 天前
【Python报错已解决】 Encountered error while trying to install package.> lxml
开发语言·python·bug
鸽芷咕4 天前
【Python报错已解决】[notice] A new release of pip available: 22.2 -> 22.2.2
开发语言·python·bug·pip
倩倩_ICE_王王4 天前
Apache安装后无法启动的问题“不能再本地计算机启动apache”
bug·apache