Re: Sobrecarga del Operador "==" para Cadena de Caracteres El error del compilador te lo dice muy claro. Generalizando: las funciones
'operator' necesitan que al menos un argumento sea una clase o un enum. No
se pueden redefinir para los tipos básicos. La razón es evitar malas ideas.
Por ejemplo, podrías tener la idea de hacer
bool operator==(double d1, double d2) {
// Algoritmo para sólo comprobar hasta dos decimales e ignorar el resto
}
Si esta operación la incluyeras en tu programa, tú sabrias lo que haces y
probablemente el programa haría lo que pretendes (diría que si comparando
3,141183 y 3,147895), pero también podrías estar cambiando cualquier
comparación de doubles de cualquier librería que utilizaras. Es más, cuando
repasarás el programa después de algún tiempo probablemente no recordarías
que el igual de doubles no es el estandar y tendrías poblemas para el
mantenimiento del programa a largo plazo.
De todas maneras, si se pudiera hacer, yo lo haría así:
bool operator==(const char *cadena1, const char *cadena2) {
while (*cadena1 && *cadena2)
if (*(cadena1++ )!= *(cadena2++))
return false;
return *cadena1 == *cadena2;
}
Aunque lo mas simple es utilizar "!strcmp(cadena1,cadena2)" |