tengo un problemilla a la hora de querer hacer el operator=, me explico y pongo los codigos de las clases.
Tenggo la clase base Persona.hpp, cuya clase dispone de operator=.
Código:
con el metodo desenvolupado en Persona.cppclass Persona{ friend ostream &operator<< (ostream &os, Persona &p); char dni[10]; char *nom; Data d_naixement; public: Persona(char *xdni, char *xnom, Data xd_naixement); Persona(); Persona (const Persona &p); //constructor COPIA!!!! ~Persona(); void visualitzar(ostream &os); Persona & operator=(const Persona &p); void setDni(const char *nouDni); void setNom(const char *nouNom); void setData(const Data novaData); char * getDni(); char * getNom(); Data getData(); };
Código:
Aqui tengo la clase Profesor.hpp que deriva de la clase Persona.Persona & Persona::operator=(const Persona &p){ delete []nom; nom=NULL; d_naixement=p.d_naixement; strcpy(dni,p.dni); if(p.nom){ nom = new char [strlen(p.nom)+1]; if(nom) strcpy(nom,p.nom); }else{ nom=NULL; } return *this; }
Código:
El problema lo tengo a la hora de desarrollar el metodo operator= de la clase profesor, en el main cuando declaro un puntero a un objeto, Professor *p, y un objeto Profesor profe("4444","pepe",Data(1,1,1990),1000) seguidamente el puntero le assgino profe. p=&profe; class Professor: public Persona{ //professor deriva de persona. float sou; public: Professor(char *xdni, char *xnom, Data xd_naix, float sou=0); Professor(); Professor(Professor & p); Professor & operator=(Professor & p); void visualitzar(ostream &os); };
En el metodo Professor::operator=, no sabria como manipular la clase persona
Código:
Professor & Professor::operator=(Professor & p) /*:Persona(p.dni,p.nom,p.d_naix)*/{ Persona::operator=(pr); sou=p.sou; return *this; } Nose si me entendeis, quiero hacer esto p=&profe, creando una copia exacta, pero que p no apunte directamente a profe. saludos