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

test

Estas en el tema de test en el foro de C/C++ en Foros del Web. Edit: Perdón por el título, pero había puesto test para poder visualizar el mensaje antes de enviarlo y luego se me ha olvidado cambiar el ...
  #1 (permalink)  
Antiguo 10/11/2008, 17:10
 
Fecha de Ingreso: noviembre-2006
Mensajes: 5
Antigüedad: 17 años, 5 meses
Puntos: 0
test

Edit: Perdón por el título, pero había puesto test para poder visualizar el mensaje antes de enviarlo y luego se me ha olvidado cambiar el título T.T

Buenas.

En la asignatura Programación Orientada a Objetos de mi carrera me han pedido realizar una práctica sobre la gestión de una clínica. El caso es que para comprobar que nuestra práctica está bien debemos pasar un autocorrector que ellos nos mandan, por lo tanto el código que usa el autocorrector no puede ser modificado ya que su función es la de comprobar que nuestra práctica funciona correctamente realizando una serie de pruebas.

El problema viene a raíz de la clase Diagnostico
Código:
class Diagnostico{

	private:
		Tratamiento *tratamiento;
<más codigo aquí>
Esta es una función miembro de la clase:

Código:
void Diagnostico::tratar(Tratamiento *t){

	if(tratamiento != NULL)
		delete tratamiento;

	tratamiento = t;
}
y este es el código que uso en el destructor de la clase:

Código:
Diagnostico::~Diagnostico(){

	if(tratamiento != NULL){
		delete tratamiento;
		tratamiento = NULL;
	}
}
Vale, hasta aquí bien, el problema viene cuando el autocorrector ejecuta la siguiente secuencia:

Código:
Tratamiento *t0 = new Tratamiento("Tratamiento #0");
Diagnostico *d0 = new Diagnostico(tdAlta,"Diagnostico #0");

d0->tratar(t0);

delete t0; delete d0;

La salida del programa es: Fallo de segmentación como es lógico ya que el destructor intenta borrar una posición de memoria que ya no existe, pero el caso es que este código del autocorrector no puedo cambiarlo delete t0; delete d0; que es el que da problemas, y no sé qué hacer en el destructor para que cuando se destruya un objeto Diagnostico elimine al objeto tratamiento que tiene asociado, como se define en la parte privada.


Bueno, si alguien ha entenddo la parrafada anterior y puede ayudarme se lo agradecería. Saludos!!

Última edición por TonoFilth; 10/11/2008 a las 17:13 Razón: Olvido del título
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 09:48.