Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con std::map No matching function for call

Estas en el tema de Problema con std::map No matching function for call en el foro de C/C++ en Foros del Web. Hola amigos, como estan? estoy haciendo un sistema y tengo un problema con el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original class a   ...
  #1 (permalink)  
Antiguo 03/07/2012, 14:59
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Problema con std::map No matching function for call

Hola amigos, como estan? estoy haciendo un sistema y tengo un problema con el siguiente código:

Código C++:
Ver original
  1. class a
  2.     {
  3.  
  4.         public:
  5.                 a();
  6.                 ~a();
  7.                 void msj()
  8.                 {
  9.                     cout << "Mensaje de A\n";
  10.                 };
  11.  
  12.  
  13.     };
  14.  
  15.     int main(int argc, char* argv[])
  16.     {
  17.        
  18.  
  19.         typedef pair<char*,a*> parT;
  20.         map<char*,parT> pilaMap;
  21.  
  22.         a* objeto;
  23.         char* b = "zz";
  24.  
  25.         parT par(b,objeto);
  26.         pilaMap.insert(b,par);//esta es la linea que da error
  27.  
  28.  
  29.  
  30.         cin.get();
  31.  
  32.         return 0;
  33.     }

El resultado del compilador es el siguiente:


Código Apache:
Ver original
  1. /home/soporte/Escritorio/Capturador/Pruebas/main.cpp||In function &#8216;int main(int, char**)’:|
  2. /home/soporte/Escritorio/Capturador/Pruebas/main.cpp|104|warning: deprecated conversion from string constant to &#8216;char*’|
  3. /home/soporte/Escritorio/Capturador/Pruebas/main.cpp|107|error: no matching function for call to &#8216;std::map<char*, std::pair<char*, a*>, std::less<char*>, std::allocator<std::pair<char* const, std::pair<char*, a*> > > >::insert(char*&, main(int, char**)::parT&)’|
  4. /usr/include/c++/4.4/bits/stl_map.h|499|note: candidates are: std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(const std::pair<const _Key, _Tp>&) [with _Key = char*, _Tp = std::pair<char*, a*>, _Compare = std::less<char*>, _Alloc = std::allocator<std::pair<char* const, std::pair<char*, a*> > >]|
  5. /usr/include/c++/4.4/bits/stl_map.h|539|note:                 typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::insert(typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename _Alloc::rebind<std::pair<const _Key, _Tp> >::other>::iterator, const std::pair<const _Key, _Tp>&) [with _Key = char*, _Tp = std::pair<char*, a*>, _Compare = std::less<char*>, _Alloc = std::allocator<std::pair<char* const, std::pair<char*, a*> > >]|
  6. ||=== Build finished: 1 errors, 1 warnings ===|


Creo que algo de lo que esta recibiendo el map no le esta gustando, pero no logro detectar que es, en que parte esta el inconveniente. por eso separe el código del sistema y lo reduje a lo que aquí les muestro para puntualizar y ver si podía sacar el error.

Desde ya muy agradecido por su ayuda.

PD: Como siempre antes me pase horas en Google buscando pero no encontre respuesta alguna :S

Saludos!

Última edición por fabian_n7; 03/07/2012 a las 17:43
  #2 (permalink)  
Antiguo 03/07/2012, 21:13
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Problema con std::map No matching function for call

Código C++:
Ver original
  1. pilaMap.insert(pair<char*,parT>(b,par));
  #3 (permalink)  
Antiguo 05/07/2012, 21:33
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema con std::map No matching function for call

Cita:
Iniciado por fightmx Ver Mensaje
Código C++:
Ver original
  1. pilaMap.insert(pair<char*,parT>(b,par));
Gracias amigo! pero si te fijas en el código, yo marque qe esa linea tiene el error, pero lo que me preguntaba es exactamente, por que se da el error, el "porque".

Gracias por contestar :) saludos!
  #4 (permalink)  
Antiguo 06/07/2012, 06:39
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Problema con std::map No matching function for call

Si analizas la línea que escribí (y que no es igual a la que tienes) te darás cuenta del error. En un map no se insertan los valores (Key, val) directamente, sino que tienes que hacerlo a través de un objeto pair.
  #5 (permalink)  
Antiguo 08/07/2012, 15:25
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema con std::map No matching function for call

Muchas gracias fightmx! no me había dado cuenta ! ya esta claro, Saludos! y gracias nuevamente.

Etiquetas: call, function, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.