我收到此错误,无法在 Visual Studio 2010 中删除。我正在使用一个第三方库,该库使用自己的“字符串”定义。另外,Visual Studio 的 xstring 文件位于其安装的文件夹中。现在,当我尝试编译代码时,出现以下错误
1>...\xyz.cpp(24): 错误 C2872: 'string' : 不明确的符号
1> 可以是'第三方库路径\string.h(31)
1> 或 'c:\program files (x86)\microsoft Visual Studio 10.0\vc\include\xstring(2063) : std::string'
编译器无法理解它应该使用哪个字符串定义。我如何在 Visual Studi 2010 中删除此错误。我希望代码使用第三方字符串定义。
我尝试在包含目录中设置第三方路径,但仍然看到此错误。
请帮我。提前致谢
这是一个例子命名空间冲突。您的代码中可能有:
#include <3rdPartyString.h> // declaration of 3rd party string type
#include <string> // declaration of std::string
using namespace 3rdPartyNamespace;
using namespace std;
...
string myStr; // which string type?
编译器现在不知道您要使用哪个字符串 - 来自第 3 方库的字符串还是 STL 字符串。您可以通过在类型前面添加命名空间名称来解决这种歧义:
3rdPartyNamespace::string myStr; // if you want to use string from 3rd party library
or
std::string myStr; // if you want to use STL string
切勿放置using namespace namespace_name;
在标头中,但也尽量避免在源文件中出现。最佳实践是预先添加类型名称,因为这不会用另一个名称空间污染您当前的名称空间,从而避免名称空间冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)