Buenas, llevo bastantes días encallado en una practica porque no consigo cambiar el tipo de objeto.
Lo que pasa es que yo tengo un objeto de Clase A (Notification) y de aqui heredan dos clases más que son MailNotification y WAppNotification. Entonces lo que yo quiero hacer es que la Clase User tiene un atributo "Notification * _notification" que de serie es un objeto de tipo MailNotification pero si quiero cambiarlo a WAppNotification no tengo cojones a hacerlo.
#include "Notification.hxx"
#include "MailNotification.hxx"
#include "WAppNotification.hxx"
class User
{
private:
Notification * _notification;
public:
User()
{
_notification = new MailNotification();
}
~User()
{
delete(_notification);
}
void notify(std::string mSubject)
{
//Solo envia las notificaciones bien a Mail
_notification->notify(descriptionMailSubject(),mSubject);
}
void setWAppNotification()
{
// Borro el _notification -> Ahora era de Type MailNotification()
delete(_notification);
Notification * n;
n = new WAppNotification();
// Aqui quiero asignar a Notification *_notification el Type WAppNotification()
setNotificationType(n);
}
void setNotificationType (Notification * mNotification)
{
_notification = mNotification;
}
El objetivo seria que se comportara así:
1) _notification es de tipo MailNotification
1.1) notify() -> ara el notify de la class MailNotification
2) setWAppNotification() -> ahora _notification es de tipo WAppNotification
2.1) notify() -> ara el notify de la clase WAppNotification
Y a lo largo de la ejeccucion del programa que vaya cambiando segun la necesidad.
Muchas gracias !