全局变量“计数”暧昧(Global variable “count” ambiguous)

2019-06-25 22:15发布

#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的),我得到的错误是这一个 ,虽然它并不适合int 'cache[]'

有什么理由?

Answer 1:

问题是,这里所有的二线,原因如下:

#include <algorithm>
using namespace std;

该生产线using namespace std汇集了来自所有名字<algorithm>其中也有一个调用的函数count ,并在代码中,你声明的变量count 。 因此,不明确的错误。

解决的办法是从来不using namespace std 。 它是坏的坏人坏事。

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



文章来源: Global variable “count” ambiguous