Error desesperante

18/12/2003 - 18:13 por jose | Informe spam
Hola grupo,

Estoy trabajando con MFC's y me encuentro con un absurdo error que no
debería surgir. Pongo un ejemplo equivalente porque el error original se
produce en una clase bastante grande:


BOOL Comparar(CString cs1, CString cs2)
{
return cs1 >= cs2;
}


: error C2668: 'CString::CString' : ambiguous call to overloaded function

El error es en la línea: return cs1 >= cs2;

Con este ejemplo dudo que se produzca el error, pero con un poco de
suerte, alguien se ha podido encontrado con un problema similar y quizás
haya podido resolverlo.

Muchas gracias,

Jose

Preguntas similare

Leer las respuestas

#1 Mateu Perelló
18/12/2003 - 18:57 | Informe spam
Yo lo haria asi

BOOL Comparar(CString cs1, CString cs2)
{
return (cs1 >= cs2?true:false);
}

si no quieres poner
BOOL Comparar(CString cs1, CString cs2)
{
if(cs1>=cs2) //si es verdadero no llegara al segundo return
return true;
//porque si pones else lo mas seguro es que te de un
error
//porque no se devuelva nada
return false;
}





return (sz1>=sz2?true:false);

"jose" ha escrit en el missatge dels grups de
discussió:
Hola grupo,

Estoy trabajando con MFC's y me encuentro con un absurdo error que no
debería surgir. Pongo un ejemplo equivalente porque el error original se
produce en una clase bastante grande:


BOOL Comparar(CString cs1, CString cs2)
{
return cs1 >= cs2;
}


: error C2668: 'CString::CString' : ambiguous call to overloaded function

El error es en la línea: return cs1 >= cs2;

Con este ejemplo dudo que se produzca el error, pero con un poco de
suerte, alguien se ha podido encontrado con un problema similar y quizás
haya podido resolverlo.

Muchas gracias,

Jose
Respuesta Responder a este mensaje
#2 Rodrigo Corral González
18/12/2003 - 19:07 | Informe spam
Creo que resolviendo la ambiguedad te funcione...

BOOL Comparar(CString cs1, CString cs2)
{
return cs1 >= (CString)cs2;
}

El problema es que el compilador no sabe que sobrecarga elegir entre:

BOOL operator >=(
const CString& s1,
const CString& s2 );

BOOL operator >=(
const CString& s1,
LPCTSTR s2 );

BOOL operator >=(
LPCTSTR s1,
const CString& s2 );

Un saludo
Rodrigo Corral González
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida