Dev - C++ - Sobrecarga Operador "==" para Cadena de Caracteres

 
Vista:

Sobrecarga Operador "==" para Cadena de Caracteres

Publicado por R.G.A.M. (10 intervenciones) el 19/08/2007 03:55:23
Realicé el siguiente algoritmo para que el operador "==", al aplicar entre dos cadenas de caracteres, devuelva el valor de verdad de la igualdad exacta de ambas cadenas de caracteres:

bool operator == (char *cadena1, char *cadena2)
{
bool temp = true;

if (strlen(cadena1) != strlen(cadena2))
temp = false;
else
{
for (int i = 0; i <= strlen(cadena1); ++i)
{
if (cadena1[i] != cadena2[i])
temp = false;
}
}

return temp;
}

Y surge el siguiente error, para la línea 9:

`bool operator==(char*, char*)' must have an argument of class or enumerated type

¿Consejos? Me sería útil recibir algo de ayuda. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sobrecarga Operador

Publicado por leo (5 intervenciones) el 26/08/2007 16:57:44
Mira creo q lo q te pide es que el operador == sea sobrecargado solo si va a ser miembro de una clase. Es decir, tenes que crear la clase "cadena" y adentro definir como miembro al operador,

class Cadena{
...
bool operator==(char * b);
//toma un solo argumento pq se supone q el otro es elpropio objeto

}

Ademas, existe una funcion que se llama strcmp
que devuelve 0 si son iguales, -1, y 1 en los otros dos casos.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobrecarga Operador

Publicado por R.G.A.M. (10 intervenciones) el 30/08/2007 01:07:44
¡Muchas gracias!

Ha sido útil el comentario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobrecarga Operador

Publicado por Ppepe (1 intervención) el 28/11/2007 22:06:10
y no solamente eso,
en c++ no se puede comparar cadenas con el operador == solamente
sino que lo hacescon el comando con
strcmp(cadena1,cadena2)
de la libreria
#include <string>

que devolvera 0 si es igual y -1 o 1 si es distinto (el 1 o -1 es por cual es mayor xD pero creo que en lo que buscas no interesa eso, simplemente con saber devuelve 0 es igual y punto)

ej
if (strcmp(cad1,cad2) == 0)
cout << "cad1 y cad2 son iguales!! << endl;
else
cout << "cad1 y cad2 son distintas"<<endl;

de hecho a la hacer la sobrecarga tendras que usar eso (internamente en el codigo de la sobrecarga) porque si no ya me diras como comparas cadenas

suerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar