#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[]'
。
有什么理由吗?
问题全是因为这里的第二行:
#include <algorithm>
using namespace std;
行
using namespace std
带来了 <algorithm>
中的所有名称,它还有一个名为 count
的函数,并且在您的代码中,您声明了一个变量 count
。因此出现了模棱两可的错误。
解决方案是永远不要写
using namespace std
。这很糟糕很糟糕。
相反,请在代码中使用
std::cout
、std::cin
、std::endl
、std::count
等。
我想我可能已经弄清楚了。我发现删除
using namespace std
并没有帮助,但是当我将变量的名称更改为不太常见的名称时,例如 count 可以更改为 cnt
或一些个人版本,例如 knt
或 isCycle
。我不太清楚这背后的原因是什么。
是的,我不知道,但是将名称更改为不太常见的变量名称对于我来说效果很好
只需更改变量名称,因为它“count”与内部关键字匹配,同时我们声明使用名称空间 std。