Sto creando una classe che ha una variabile di istanza con diverse implementazioni, ma il problema è che tutte le implementazioni hanno un'interfaccia leggermente diversa.
Esempio:
class GameObject {
virtual Transform * getTransform() = 0;
};
class Transform {
virtual void setPosition() = 0;
virtual Model getModel() = 0;
virtual void refreshModel() = 0;
virtual void Draw() = 0;
};
// This Class has a .cpp
class TransformImpl : public Transform {
virtual void setPosition();
Model getModel();
void refreshModel();
void Draw();
};
// This Class has a .cpp
class InstancedTransformImpl : public Transform {
void setPosition(int instance);
std::vector<Model> getModels(); // notice the difference in the interface
void refreshModel();
void Draw();
};
Il punto che voglio fare è che voglio solo una classe GameObject
quindi voglio che il mio metodo geTransform()
abbia un tipo di ritorno di classe Transform
. Il problema che sto avendo è che poiché TransformImpl
e InstancedTrasformImpl
hanno interfacce leggermente diverse non posso avere getTransform()
per restituire un Transform
e invece ho bisogno di implementare GameObject
due volte con un sacco di codice duplicato.
C'è una buona soluzione per implementare GameObject
una volta?
O sarebbe meglio avere più implementazioni GameObject
ciascuna avente rispettivi Transform
di Impl con un'interfaccia più clemente?