我是一名刚接触编程的人,并且一直在努力学习C ++初学者指南' (我非常享受!)。但是,我遇到了一些问题。在第5章中,Schildt讨论了全局变量,他介绍了这个小程序,以展示如何使用它们:
#include<iostream>
using namespace std;
void func1();
void func2();
int count;
int main()
{
int i;
for (i = 0; i < 10; i++){
count = i * 2;
func1();
}
cin.get();
return 0;
}
void func1()
{
cout << "count: " << count; // access global count
cout << "\n";
func2();
}
void func2(){
int count;
for (count = 0; count < 3; count++) cout << ".";
}
当我编译代码时,只要在主程序段和程序的其他功能中使用变量计数,我就会收到错误消息。这是编译器的一个问题(Visual Studio Express 2013?我是否需要在全局变量前加上一些东西才能使用它?
提前致谢,
Ĵ
答案 0 :(得分:6)
count
在您的代码和标准库(在std命名空间中)中定义。使用using namespace std;
将整个Standard命名空间拖动到全局命名空间会产生歧义。您应该至少执行以下操作之一:
using namespace
std;要么使用函数中的命名空间,要么只使用您需要的名称,或者在使用它们时限定所有标准名称
仔细选择自己的名字以避免与标准名称冲突count
更改为 * ,以避免含糊不清。count
的引用,撰写::count
。<小时/> * )特别注意标准库还定义了名称
distance
。
答案 1 :(得分:4)
我猜这是接近你得到的错误:
In function 'int main()':
Line 13: error: reference to 'count' is ambiguous
compilation terminated due to -Wfatal-errors.
使用命名空间std使count引用std :: count,它是标准库中的算法。