Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2012, 16:07
fabian_n7
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta ¿polimorfismo en c++ error en tiempo de ejecucion?

Hola a todos, que tal? estuve estudiando c++ y hay un problema que no puedo resolver. Es un poco complejo por que el compilador no da error, sin embargo cuando ejecuto el programa, salta un mensaje en tiempo de ejecución que dice " violación de memoria" necesitaría si por favor, alguien me ayuda a encontrar el error, aquí el código:

clase1.h
------------
Código:
#ifndef CLASE1_H
#define CLASE1_H

#include<string>
using std::string;

class clase1//clase abstracta
{
public:
clase1(string);
virtual ~clase1();
void setMensaje(string);
string getMensaje();
virtual string imprimirMensaje();
private:
string mensaje;
};

#endif //CLASE1_H
clase1.cpp
-----------------

Código:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;

#include<iomanip>
using std::setw;


#include"clase1.h"

clase1::clase1(string msj)
{
setMensaje(msj);
}

void clase1::setMensaje(string msj)
{
mensaje = msj;
}

string clase1::getMensaje()
{
return mensaje;
}

string clase1::imprimirMensaje()
{
cout << "El mensaje es: \n" << setw(25) << getMensaje() << "objeto de: clase1" << endl;

}
clase1::~clase1()
{

}
clase2.h
---------------------

Código:
#ifndef CLASE2_H
#define CLASE2_H

#include<string>
using std::string;

#include"clase1.h"

class clase2 : public clase1
{
public:
clase2(string);
virtual ~clase2();
string imprimirMensaje();

};
#endif //CLASE2_H
clase2.cpp
--------------------
Código:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;

#include<iomanip>
using std::setw;

#include"clase2.h"

clase2::clase2(string msj) : clase1(msj)
{

}

string clase2::imprimirMensaje()
{
cout << "El mensaje es: \n" << setw(25) << getMensaje() << "objeto de: clase2" << endl;

}
clase2::~clase2()
{

}

y finalmente el programa donde creo esta el error:

programa.cpp
--------------------------

Código:
#include"clase2.h"
#include<iostream>
using std::cin;
using std::cout;

int main()
{
clase1 *sistema1Ptr = 0;
clase2 *sistema2Ptr = 0;

clase1 sistema1("HOLA");
sistema1Ptr = &sistema1;
sistema1Ptr->imprimirMensaje();

//sistema1Ptr = 0;
clase2 sistema2("HOLA2");
sistema1Ptr = &sistema2;
sistema1Ptr->imprimirMensaje();


cin.get();

return 0;
}
Aclaro este programa es a modo de aprendizaje, en si solo muestra un mensaje, si alguien me puede indicar donde y como corregir el error se lo agradecería mucho, Saludos!!

Última edición por fabian_n7; 21/02/2012 a las 16:20