C/Visual C - Ayuda con sobrecarga de operadores

 
Vista:

Ayuda con sobrecarga de operadores

Publicado por Jose Morales (16 intervenciones) el 25/09/2005 01:44:51
Hola lo que pasa eske estoy haciendo un codigo en el que kiero utilizar el operador += para un tipo de string, de modo si declaro una string r="hola " y luego otra string w=" mundo", r+=w, aparezca en r "hola mundo", ya cree el codgio, solo que nose en que me estoy ekiovancando ya ke al ejecutralo me sale error, ayudenme porfavor. aki esta el codigo gracias.

#include <iostream.h>
#include <string.h>

class string{
private:
char *v;
int lon;
public:
string(){lon=0; v=new char[10];}
string(char* str);
~string(){delete v;}

void operator+=(const string &);
string & operator=(const string &);
char *mostrar(){return v;}
};

string::string(char *str){
lon=strlen(str)+1;

v=new char[lon];
strcpy(v,str);
}

void string::operator +=(const string & str){ //Aqui esta el error, nose ke sea

lon=strlen(v)+strlen(str.v)+1;
string aux(v);
delete v;
v=new char[lon];
v=strcat(aux.v,str.v);
}

string &string::operator=(const string& cad){
lon=strlen(cad.v)+1;
delete v;
v=new char[lon];
strcpy(v,cad.v);
return *this;
}

int main()
{
string u=("Esto es solo un test");
string r=(" y este tambien");
u+=r;
cout<<"u= "<<u.mostrar()<<endl;

return 0;
}
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:Ayuda con sobrecarga de operadores

Publicado por fernando.gomez (1603 intervenciones) el 26/09/2005 06:48:17
Sería bueno que nos dijeras qué error te sale. Yo encontré algunos.

Primero, como v es un array, delete v; es incorrecto, lo correcto es delete [] v.

Segundo, tu sobrecarga de operador es:

lon=strlen(v)+strlen(str.v)+1;
string aux(v);
delete v;
v=new char[lon];
v=strcat(aux.v,str.v);

en v=strcat(aux.v, str.v), yo creo que tendrías que hacer referencia a this en lugar de a aux.

strcat(this->v, str.v);

y aux ya no lo necesitas.

De ahí en fuera, todo parece estar bien (quizás estoy miope, es la una de la mañana ahorita), sería bueno que dijeses qué error tienes.

Salutes.
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:Ayuda con sobrecarga de operadores

Publicado por Jose Morales (16 intervenciones) el 26/09/2005 07:37:28
Hola que tal
Me sale un erroa al ejecutar el prgrama, dice algo asi como

Debug Error!
DAMAGE: after Normal Block (#45) at 0x00431D60

Nose ke deminios sea, y pues si he cierto tenia ese error, de
delete [ ] v;
pero aun asi me sigue saliendo el error al ejecutar el programa, y pues en cuanto lo ke me dices de ke la sentencia

v=strcat(aux.v,str.v);
la cambie a esta:

strcat(this->v, str.v);

No puedo hacerlo ya que si te fijas hice un objeto "string" auxiliar porke borro "v" antes y pues ya no voya tener la informacion de v y por lo tanto la grabo en el objeto AUX , para unir la informaion de la string "aux.v" con la informacion de la string "str.v"
Aun no se ke error sea
lo que sea es weno.
GRacias por tu opinion
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