我遇到了以下问题:
当我使用此代码时
#include <iostream>
int count = 10; /* Global variable */
int main() {
while(count--) {
}
return 0;
}
代码编译得非常好。但是,如果我使用命名空间std添加&#34;&#34;然后我收到错误消息&#34; count unclared&#34;在while循环中。如果我添加&#34;静态&#34;同样如此。之前&#34; int count&#34;。我是C ++的新手,所以我还没有完全理解范围等。有人可以解释一下吗?提前谢谢!
答案 0 :(得分:3)
名称空间std
也声明名称count
。此名称对应于标准算法std::count
。
所以当你包含指令
using namespace std;
当使用非限定名称count
时
while(count--){ // ... }
然后可能会有歧义。
要解决歧义,您应该使用限定名称。例如
using namespace std;
//...
while( ::count--) {
^^^^^^^^
//...
}
一般来说,使用可能导致这种模糊性的指令并不是一个好主意。
答案 1 :(得分:1)
这种情况正在发生,因为名字&#39;计数&#39;在std llibrary中有另一个定义。 看这里 - http://en.cppreference.com/w/cpp/algorithm/count。
std::count
Count是一个模板定义,在使用using namespace std
编译器无法在std lib中计数varable和count模板之间进行判断之后,在标准库中进行了定义。
您可能想要更改计数整数名称:)
答案 2 :(得分:0)