La siguiente biblioteca de C++ fue compilado correctamente en VS2008

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

Cuando he abierto en VS2010, pasa a través de la conversión de asistente de proceso sin errores.

Ahora, cuando intento compilar en VS2010, tengo algo raro STL errores como estos:

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

No estoy seguro de qué hacer con algunos de estos. Por ejemplo,
back_insert_iterator es en realidad un miembro de std, pero VS no parecen pensar que es.

¿Cómo puedo solucionar los errores como estos? Sólo que no parece tener mucho sentido, así que no estoy seguro de por dónde empezar. Tal vez algo en mi configuración del proyecto?

Por ejemplo, aquí está la línea de 1018, que da la ets de error:

std::back_insert_iterator<BinaryData> ins = std::back_inserter(*(u.asBinary));

Si alguien me podría dar alguna dirección se lo agradecería. Soy bastante nuevo en C++ que estoy teniendo un momento difícil averiguar esto.

InformationsquelleAutor Jake Wilson | 2010-06-02

2 Comentarios

  1. 31

    Probablemente olvidó #include <iterator> en algunos de sus archivos. Ahí es donde las cosas como back_insert_iterator están declarados.

    En el pasado, usted podría conseguir lejos con olvido de que el archivo de encabezado, ya que muchas de las otras cabeceras estándar también incluido. VS2010 reorganizado los encabezados para su implementación de la biblioteca para ser más compatible con los estándares. Como resultado, es mucho menos tolerante de falta de encabezados, y <iterator> es un comúnmente se pasa por alto uno.

    • Estoy feliz de que el equipo de Microsoft es el endurecimiento de la STL de la Biblioteca. Tenía que hacerlo para el SDK para nuestro producto, y hemos tenido que introducir muchos cambios importantes como este. Pero todo fue para mejor.

Dejar respuesta

Please enter your comment!
Please enter your name here