Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/11/2011, 03:35
joanan46
 
Fecha de Ingreso: septiembre-2011
Mensajes: 87
Antigüedad: 13 años, 3 meses
Puntos: 6
Herencia de clases.

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

Última edición por joanan46; 16/11/2011 a las 04:05