Shape.h
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;
};
Используется так:
std::vector<Graphics::ShapePointPair> theShapes = theSurface.getList();
for(int i = 0; i < theShapes.size(); i++) {
theShapes[i].shape.Render(theShapes[i].location);
}
Этот код в конечном итоге вызывает Shape::Render
а не Rect::Render
Я предполагаю, что это потому, что он приводит Rect
к Shape
, но я понятия не имею, как остановить это, делая это. Я пытаюсь позволить каждой фигуре управлять тем, как она отображается, переопределяя метод Render
.
Есть идеи, как этого добиться?