Implícito la creación de instancias de indefinido plantilla ‘std::basic_string<char, std::char_traits<char> std::asignador<char> >’

En el proyecto que he estado trabajando, tenemos que enviar Cacao notificaciones de C++ sub-proyectos para el proyecto principal por encima de ella. Para ello se construye un mapa para actuar como un almacén de claves y valores para la userInfo diccionario de la notificación.

En uno de los proyectos, el siguiente código se compila correctamente:

std::map<std::string, std::string> *userInfo = new std::map<std::string, std::string>;
char buffer[255];

sprintf(buffer, "%i", intValue1);
userInfo->insert(std::pair<std::string, std::string>("intValue1", std::string(buffer)));

sprintf(buffer, "%i", intValue2);
userInfo->insert(std::pair<std::string, std::string>("intValue2", std::string(buffer)));

if(condition)
    userInfo->insert(std::pair<std::string, std::string>("conditionalValue", "true"));

PostCocoaNotification("notificationName", *userInfo);

Sin embargo, cuando este se copia en un archivo idéntico en otro sub-proyecto, el compilador produce la siguiente en la userInfo->insert llamadas:

"Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'" 

..y no se puede encontrar la función para la PostCocoaNotification:

No matching function for call to 'PostCocoaNotification'

Además, arroja los siguientes errores en el sistema de cabeceras:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:73:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:74:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:73:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_tree.h:1324:13: Cannot initialize a parameter of type '_Link_type' (aka '_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > *') with an rvalue of type '_Const_Link_type' (aka 'const _Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > *')

No tengo idea de qué he hecho para causar el caos, especialmente cuando el código se ejecuta perfectamente en otro sub-proyecto (con éxito el envío de notificaciones). Cualquier visión del problema, sería muy bienvenida.

  • Mi primera conjetura es que usted necesita incluir algo. Posiblemente el encabezado para el par ( utilidad ) o de cadena.
  • Me imagino string demasiado
  • No creo que la cadena de encabezado es el culpable, la línea donde userInfo es inicializado (std::map<std::string, std::string> *telemetry = new std::map<std::string, std::string>;) no tira ningún error.
InformationsquelleAutor Andrew | 2013-10-07

1 Kommentar

  1. 94

    Necesita incluir estos encabezados:

    #include <string>
    #include <sstream>
    #include <iostream>
    • Si eso no funciona, por favor agregue: #include <fstream>

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea