为什么即使没有局部变量,全局变量也会显示歧义错误?

时间:2017-08-01 12:51:45

标签: visual-studio c++11 global-variables ambiguous ambiguity

代码:

#include<iostream>
using namespace std;
int move=0;
void main()
{
 ++move;
}

##错误:&#34;移动&#34;含糊不清

我如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

停止输入using namespace std;

之所以发生这种情况,是因为您将namespace std中的大量符号注入到全局命名空间中,然后碰巧使用其中一个符号。 std很大,任何标题都可以包含任何其他标题。根本不要using namespace std;

如果必须,可以在函数中本地执行,或者在函数中本地显式更好using std::what_you_need;

答案 1 :(得分:0)

尝试在变量名称之前使用::,意味着来自全局名称空间。

正确的代码:

#include<iostream>
using namespace std;

int move=0;

int main()
{
    ++::move;
    return 0;
}

或者

#include<iostream>
using namespace std;

int move=0;

int main()
{
    using ::move;

    ++move;
    return 0;
}