Buenos dias, esto de programar de buena mañana...
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:
class 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();
};
con el metodo desenvolupado en Persona.cpp
Código:
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;
}
Aqui tengo la clase Profesor.hpp que deriva de la clase Persona.
Código:
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);
};
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;
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