[C con Clase] Problemas con inicializacion de tipos

Camus SoNiCo camus.linux en gmail.com
Lun Sep 21 04:08:00 CEST 2009


Es una convencion que se lleva bien con los compiladores.

Sds

2009/9/20 Ferran Ferri <ferranferri en gmail.com>

> Tienes toda la razon. Era justamente eso. Por cierto, por que es
> conveniente que le quite los parentesis a los constructores?
>
> Muchas gracias
> Ferran
>
>
>
> 2009/9/20 Steven Davidson <srd4121 en njit.edu>:
> > Hola Ferrán,
> >
> > Ferran Ferri wrote:
> >
> > [CORTE]
> >
> >> Yo creo que las dos hacen casi lo mismo a diferencia de que
> >> addlistener lleva un vector en vez de un queue. Pero la primera va
> >> bien, y la he comprobado, pero la segunda no me compila. El
> >> compilador, VStudio.NET 2008 me da un error como este:
> >>
> >> 1>Compilando...
> >> 1>GlobalLog.cpp
> >>
> >>
> 1>c:\users\ferran\directo\openglprojects\centrallog\centrallog\globallog.cpp(48)
> >> : error C2665: 'std::pair<_Ty1,_Ty2>::pair' : ninguna de las 3
> >> sobrecargas pudo convertir todos los tipos de argumento
> >> 1>        with
> >> 1>        [
> >> 1>            _Ty1=std::string,
> >> 1>            _Ty2=tools::GLog::CGlobalLog::t_ListenerVectorMap *
> >> 1>        ]
> >> 1>        c:\program files (x86)\microsoft visual studio
> >> 9.0\vc\include\utility(40): puede ser
> >> 'std::pair<_Ty1,_Ty2>::pair(const _Ty1 &,const _Ty2 &)'
> >> 1>        with
> >> 1>        [
> >> 1>            _Ty1=std::string,
> >> 1>            _Ty2=tools::GLog::CGlobalLog::t_ListenerVectorMap *
> >> 1>        ]
> >> 1>        al hacer coincidir la lista de argumentos '(std::string,
> >> tools::GLog::CGlobalLog::t_ListenerVector *)'
> >>
> >
> > Viendo los mensajes de error y el código que has escrito, el problema
> está
> > aquí:
> >
> > void CGlobalLog::addListener( IListener* listener, std::string
> > loggerGroup /*= "[GLOBAL]"*/ )
> > {
> >  t_ListenerVectorMap::iterator it = listenerVectorMap.find(loggerGroup);
> >  // Si el listener no esta asociado a ningun loggerGroup lo añadimos aqui
> >  if (it == listenerVectorMap.end())
> >  {
> >
> >
> listenerVectorMap.insert(std::pair<std::string,t_ListenerVectorMap*>(loggerGroup,new
> > t_ListenerVector()));
> >  }
> > }
> >
> > La línea causante es:
> >
> > listenerVectorMap.insert( std::pair<std::string,t_ListenerVectorMap*>(
> > loggerGroup, new t_ListenerVector() ) );
> >
> > La pareja es de una cadena 'std::string' y un puntero: 't_ListenerVector
> *'.
> > Por lo tanto, esto debería ser,
> >
> > listenerVectorMap.insert( std::pair<std::string,t_ListenerVector *>(
> > loggerGroup, new t_ListenerVector ) );
> >
> >
> > También deberías eliminar los paréntesis al instanciar objetos sin
> > parámetros con 'new'. Esto es,
> >
> > new t_msgQueue
> >
> > y no,
> >
> > new t_msgQueue()
> >
> > Al igual que,
> >
> > new t_ListenerVector
> >
> > en vez de,
> >
> > new t_ListenerVector()
> >
> >
> > Espero que esto te ayude.
> >
> > Steven
> >
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> >
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Hernan G. Gonzalez.
"If there is a sin against life, it consists perhaps not so much in
despairing of life as in hoping for another life and in eluding the
implacable grandeur of this life."
Albert Camus.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090920/21ad4ea5/attachment.html>


Más información sobre la lista de distribución Cconclase