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;

}

相关推荐
zhz52143 小时前
后端代码规范文档示例
重构·bug·代码规范·结对编程
luming-026 小时前
java报错解决:sun.net.utils不存
java·经验分享·bug·.net·intellij-idea
星月心城10 小时前
Element Plus 2.7.5 的 datetimerange 存在 is-disabled 误判 Bug(头部年份 / 月份被错误禁用)
bug
C语言不精12 小时前
解决ESP出现MD5报错或验证芯片bug
嵌入式硬件·bug·esp32
萧曵 丶1 天前
Java 常用运行参数配置及实际业务详解
java·bug·优化·问题排查·生产问题
熊猫钓鱼>_>1 天前
Makefile应用场景实践日志:构建高效C/C++项目工作流
c语言·c++·bug·mfc·makefile·编译·kmp
野生技术架构师2 天前
喜提一个bug,聊聊@NotEmpty和@NotBlank
java·算法·bug
好记忆不如烂笔头abc2 天前
dmesg日志显示BUG: unable to handle page fault for address
bug
有错误先debug2 天前
记录一次接入Google智能音箱开发测试阶段的bug修复
bug·智能音箱
百***58842 天前
技术文章大纲:Bug悬案侦破大会
bug