Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Herencia de clases.

Estas en el tema de Herencia de clases. en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/11/2011, 03:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 87
Antigüedad: 12 años, 7 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
  #2 (permalink)  
Antiguo 16/11/2011, 04:08
 
Fecha de Ingreso: septiembre-2011
Mensajes: 87
Antigüedad: 12 años, 7 meses
Puntos: 6
Respuesta: Herencia de clases.

vale error mio, es normal que se modifique, es un PUNTERO!!! dish.

Haciendo pruebas y creando un profesor nuevo:

Profesor pro3;

pro3=pro1; // asi si modifico pro3, pro1 no se modifica ya que es un profesor, no un puntero.

Solucionado ejejej.

Etiquetas: clase, const, herencia, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.