Estuve chequeando por todo Google, pero la verdad no pude encontrar nada acerca del error particular que se da al ejecutar el programa. Si alguien puede probarlo e interpretar cual puede estar siendo el error, me sería de gran ayuda, ya que lo verificado muchas veces, buscado información al respecto (incluido libros) pero no encuentro el error, como aclare en el post anterior, el compilador indica que no hay ningún error de sintaxis, el mensaje de error se produce en tiempo de ejecución que es cuando se hace efectivo el polimorfismo.
Espero puedan ayudarme con el tema ya que agote todas las vías y no pude resolverlo, De Ante mano muchas gracias!
Disculpen, soy nuevo en el foro, edito el codigo con las etiquetas correspondientes para que sea mas legible para todos:
clase1.h
------------
Código:
Código C++:
Ver original#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:
Código C++:
Ver original#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:
Código C++:
Ver original#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:
Código C++:
Ver original#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:
Código C++:
Ver original#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;
}
Nuevamente Gracias :)