还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

error C2872: “count”: 不明确的符号

来源:清泛原创     2016-08-29 17:12:20    人气:     我有话说( 0 人参与)

error C2872: count: 不明确的符号 可能是conflict.cpp(4) : int count 或 C: Program Files Microsoft Visual Studio 11.0 V...

error C2872: “count”: 不明确的符号

可能是“conflict.cpp(4) : int count” 或 “C:\Program Files\Microsoft Visual Studio 11.0\VC\INCLUDE\xutility(3251) : iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)”

conflict.cpp(12) : error C2872: “count”: 不明确的符号  可能是“conflict.cpp(4) : int count”  或   “C:\Program Files\Microsoft Visual Studio 11.0\VC\INCLUDE\xutility(3251) : iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)”


出错代码:

#include <iostream>  
using namespace std;  
  
int count = 0;  
int increment()  
{  
    return ++count;// error, identifier count is ambiguous  
}  
int main()  
{     
    increment();  
    cout<<"count= "<<count<<endl;  
    return 0;  
}

解决办法:  使用命名机制来避免命名冲突,这里count既可以是程序中全局变量count,也可能是std::count,因此引起歧义,导致出错。

1) 尽量少用directive方式来引用命名空间:(directive方式即using namespace std;)

取而代之,使用use std::cout,引用命名空间的成员,而不是将其置为后续名字的默认命名空间。

#include <iostream>  
  
using std::cout;//使用命名空间一个名字  
using std::endl;  
  
int count = 0;  
int increment()  
{  
    return ++count;  
}  
int main()  
{     
    increment();  
    cout<<"count= "<<count<<endl;  
    return 0;  
}

2) 使用命名空间引用变量,在命名空间中定义变量、函数和类。

#include <iostream>  
using namespace std;  
  
namespace global {  
    int count = 0;//重新定义一个命名空间  
}  
int increment()  
{  
    return ++global::count;  
}  
int main()  
{     
    increment();  
    cout<<"count= "<<global::count<<endl;  
    return 0;  
}

error C2872

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: