Hola foro,
Tengo las siguientes clases:
-Component
-Client
-Logger
Component es una interfaz que usa el patron singleton:
Component.h
class Component
{
public:
virtual void Metodo1();
Component* GetInstance();
private:
Component* _Instance;
};
Con su implementacion:
Component.cpp
#include "Component.h"
#include "Logger.h"
Component* Component::GetInstance()
{
if (_Instance == 0)
{
_Instance = new Logger;
}
return _Instance;
}
void Component::Metodo1(){}
Logger es la clase que implementa esta interfaz:
logger.h
#include "Component.h"
#include "Client.h"
class Logger : public Component
{
public:
Logger();
~Logger();
void Metodo1();
Con su implementacion:
Logger.cpp
void Logger::Metodo1()
{
//Alguna accion por hacer
}
En ultimo lugar tengo la clase Client, que es la clase desde la se accedera a la interfaz "component"
Client.h
#include "Logger.h"
#include "Component.h"
class Client
{
public:
Client();
~Client();
void EnviaMiss();
private:
Logger *the_Component;
};
Con su implementacion:
Client.cpp
#include "Client.h"
Client::Client()
{
the_Component = new Logger;
}
Client::~Client()
{
delete the_Component;
}
void Client::EnviaMiss()
{
the_Component= the_Component->GetInstance();
the_Component->Metodo1();
}
El error me aparece al compilar cuando intento hacer el "GetInstance()" dentro del metodo EnviaMiss, con el siguiente mensaje:
Client.cpp : error C2440: '=' : no se puede realizar la conversión de 'Component *' a 'Logger *'
La conversión de la base al elemento derivado requiere dynamic_cast o static_cast
Alguna recomendacion de que hacer con este error?
Gracias.