#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[]'
。
有什么理由?
答案 0 :(得分:54)
问题在于这里的第二行:
#include <algorithm>
using namespace std;
行using namespace std
带来了来自<algorithm>
的所有名称,其中还有一个名为count
的函数,并且在您的代码中,您已声明了变量count
。因此模棱两可的错误。
解决方案是从不写using namespace std
。这是糟糕的坏事。
相反,请在代码中使用std::cout
,std::cin
,std::endl
,std::count
等。
答案 1 :(得分:0)
我想我可能已经知道了。我发现删除using namespace std
并没有帮助,但是当我将变量的名称更改为不太常见的名称时,例如count可以更改为cnt
或某些个人版本,例如{{ 1}}或knt
。我不完全知道这是什么原因。
答案 2 :(得分:-1)
是的idk,但在我的情况下,将名称更改为不太常用的变量名称就可以了