VS 2008->VS 2010导致STL错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (77)

以下C++库已在VS 2008中成功编译

http://sourceforge.net/projects/xmlrpcc4win/files/xmlrpcc4win/XmlRpcC4Win1.0.8.zip/download

当我在VS 2010中打开它时,它会通过转换向导过程,没有任何错误。

现在,当我试图在VS 2010中编译它时,我会得到一些奇怪的STL错误,如下所示:

1>TimXmlRpc.cpp(1018): error C2039: 'back_insert_iterator' : is not a member of 'std'
1>TimXmlRpc.cpp(1018): error C2065: 'back_insert_iterator' : undeclared identifier
1>TimXmlRpc.cpp(1018): error C2275: 'XmlRpcValue::BinaryData' : illegal use of this type as an expression
1>TimXmlRpc.cpp(1018): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1018): error C2039: 'back_inserter' : is not a member of 'std'
1>TimXmlRpc.cpp(1018): error C3861: 'back_inserter': identifier not found
1>TimXmlRpc.cpp(1019): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2039: 'back_insert_iterator' : is not a member of 'std'
1>TimXmlRpc.cpp(1031): error C2065: 'back_insert_iterator' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2275: 'std::vector<_Ty>' : illegal use of this type as an expression
1>          with
1>          [
1>              _Ty=char
1>          ]
1>TimXmlRpc.cpp(1031): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2039: 'back_inserter' : is not a member of 'std'
1>TimXmlRpc.cpp(1031): error C3861: 'back_inserter': identifier not found
1>TimXmlRpc.cpp(1032): error C2065: 'ins' : undeclared identifier

我不知道该怎么处理这些。例如,back_insert_iterator实际上是std但VS似乎并不认为是这样。

我如何修复这样的错误?他们似乎没有多大意义,所以我不知道从哪里开始。也许在我的项目设置中有什么?

例如,下面是第1018行,它提供了STD错误:

std::back_insert_iterator<BinaryData> ins = std::back_inserter(*(u.asBinary));
提问于
用户回答回答于
用户回答回答于

你可能忘了#include <iterator>在你的一些文件里。您可以忘记那个头文件,因为许多其他标准头也包括它。VS 2010重新组织了其库实现的标头,以使其更符合标准。因此,对丢失的标题就更不宽容了,而且<iterator>是一个通常被忽视的。

扫码关注云+社区

领取腾讯云代金券