sobrecarga de operador c++

No se si esto es muy correcto ya que devuelvo cad que es una variable local(aparte de la chapucilla que hice con el string pero no sabia como devolver el puntero a char sin complicarme mucho a vida ;D) aparte me di cuenta de que la primera vez que lo usas va bien pero ala segunda que uses el mismo objeto fecha la cadena te sale asi "Domingo 13 de Febrero de 2000ero de 20" como podria evitar esto???
Fecha::operator char*(){
   char * cad=new char[100];
   stringstream msg;
   msg << diaSem(d,m,a)<<" "<< d << " de " << mes(m) << " de " << a;
   string s=msg.str();
   
   for ( string :: size_type i = 0; i < s. size (); ++i){
      cad[i]=s[i];
      //cout<<cad[i];
   }
   return  cad;
}

Ahora me di cuenta de que la primera vez que lo usas va bien pero ala segunda que uses elmismo objeto fecha la cadena te sale asi Domingo 13 de Febrero de 2000ero de 2000
Devuelves un puntero que apunta a una porción de memoria creada dinámicamente y que probablemente no borres... Sí, es una chapuza xD.

No es más fácil usar la función del string c_str()?

Fecha::operator char*()
{
   stringstream msg;
   msg << diaSem(d,m,a)<<" "<< d << " de " << mes(m) << " de " << a;
   string s=msg.str();
   return s.c_str();
}
1 respuesta