全局变量“count”不明确

问题描述 投票:0回答:5
#include <algorithm>
using namespace std;

int count = 0, cache[50];

int f(int n)
{  
    if(n == 2) count++;
    if(n == 0 || n==1) return n;
    else if (cache[n] !=- 1) return cache[n];
    else cache[n]= f(n-1) + f(n-2);
    return cache[n]; 
}

我在 gcc 4.3.4 中使用此函数,并收到以下错误:

prog.cpp: In function ‘int f(int)’:
prog.cpp:38: error: reference to ‘count’ is ambiguous

在我的本地计算机(mingw32)上,我得到的错误是 this one,尽管它不是针对

int 'cache[]'

有什么理由吗?

c++ variables global
5个回答
90
投票

问题全是因为这里的第二行:

#include <algorithm>
using namespace std;

using namespace std
带来了
<algorithm>
中的所有名称,它还有一个名为
count
的函数,并且在您的代码中,您声明了一个变量
count
。因此出现了模棱两可的错误。

解决方案是永远不要

using namespace std
。这很糟糕很糟糕。

相反,请在代码中使用

std::cout
std::cin
std::endl
std::count
等。


1
投票

我想我可能已经弄清楚了。我发现删除

using namespace std
并没有帮助,但是当我将变量的名称更改为不太常见的名称时,例如 count 可以更改为
cnt
或一些个人版本,例如
knt
isCycle 
。我不太清楚这背后的原因是什么。


0
投票

是的,我不知道,但是将名称更改为不太常见的变量名称对于我来说效果很好


0
投票

只需更改变量名称,因为它“count”与内部关键字匹配,同时我们声明使用名称空间 std。


0
投票

enter image description here

一图胜千言

© www.soinside.com 2019 - 2024. All rights reserved.