VS2008 -> VS2010 conduit à cryptique STL erreurs
La suite de la bibliothèque C++ a été compilé avec succès dans VS2008
http://sourceforge.net/projects/xmlrpcc4win/files/xmlrpcc4win/XmlRpcC4Win1.0.8.zip/download
Quand je l'ouvre dans VS2010, il passe par la conversion de la procédure de l'assistant sans erreurs.
Maintenant, quand j'essaye de le compiler dans VS2010, je reçois un étrange STL erreurs de ce type:
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
Je ne sais pas quoi faire de certains de ces. Par exemple,
back_insert_iterator
est en fait un membre de std
, mais VS ne semble pas penser qu'il est.
Comment puis-je corriger les erreurs comme celle-ci? Ils ne semblent tout simplement pas beaucoup de sens si je ne suis pas sûr où commencer. Peut-être quelque chose dans mes paramètres du projet?
Par exemple, voici la ligne de 1018, ce qui donne l'erreur std:
std::back_insert_iterator<BinaryData> ins = std::back_inserter(*(u.asBinary));
Si quelqu'un pouvait me donner une certaine direction, je l'apprécierais. Je suis assez nouveau à C++ que je vais avoir un moment difficile essayer de comprendre celui-ci.
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement oublié
#include <iterator>
dans certains de vos fichiers. C'est là que des choses commeback_insert_iterator
sont déclarées.Dans le passé, vous pourriez vous en sortir avec l'oubli que le fichier d'en-tête, comme de nombreuses autres en-têtes standard également inclus. VS2010 réorganisé les en-têtes de la bibliothèque de la mise en œuvre pour être plus conforme aux normes. Comme un résultat, c'est beaucoup moins indulgents à l'égard des manquants en-têtes, et
<iterator>
est souvent négligé de l'un.À partir de MSDN:
L'en-tête n'est plus inclus automatiquement par de nombreux autres fichiers d'en-tête. Au lieu de cela, inclure l'en-tête de façon explicite si vous avez besoin de support pour la version autonome d'itérateurs défini dans l'en-tête.
http://msdn.microsoft.com/en-us/library/bb531344.aspx