Shape.hC++ alteradas temporalmente método no siendo llamada
namespace Graphics {
class Shape {
public:
virtual void Render(Point point) {};
};
}
Rect.h
namespace Graphics {
class Rect : public Shape {
public:
Rect(float x, float y);
Rect();
void setSize(float x, float y);
virtual void Render(Point point);
private:
float sizeX;
float sizeY;
};
}
struct ShapePointPair {
Shape shape;
Point location;
};
Se utiliza la siguiente manera:
std::vector<Graphics::ShapePointPair> theShapes = theSurface.getList();
for(int i = 0; i < theShapes.size(); i++) {
theShapes[i].shape.Render(theShapes[i].location);
}
Este código termina llamando Forma :: Render y not Rect :: Render
Supongo que esto es porque está moldeando el Rect a Shape, pero no tengo idea de cómo detenerlo haciendo esto. Estoy tratando de dejar que cada forma controle cómo se renderiza anulando el método Render.
¿Alguna idea sobre cómo lograr esto?
Tal vez usted quiere mostrarnos el código que crea los elementos del vector? –
El problema y la solución son casi idénticos a esta pregunta http://stackoverflow.com/questions/1230006/. Como allí, tiene un vector de (struct containting a) clase base concreta, que debe crear mediante * slicing * clases derivadas si espera que se invoque Rect :: Render. –