全局变量“计数”含糊不清

时间:2012-06-30 06:06:14

标签: c++ variables global

#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[]'

有什么理由?

3 个答案:

答案 0 :(得分:54)

问题在于这里的第二行:

#include <algorithm>
using namespace std;

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

解决方案是从不using namespace std。这是糟糕的坏事。

相反,请在代码中使用std::coutstd::cinstd::endlstd::count等。

答案 1 :(得分:0)

我想我可能已经知道了。我发现删除using namespace std并没有帮助,但是当我将变量的名称更改为不太常见的名称时,例如count可以更改为cnt或某些个人版本,例如{{ 1}}或knt。我不完全知道这是什么原因。

答案 2 :(得分:-1)

是的idk,但在我的情况下,将名称更改为不太常用的变量名称就可以了