Shape.hC++ Переопределенный метод не вызывался
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 :: Рендер и не Rect :: Render
Я предполагаю, что это потому что он отличает Rect к форме, но я не знаю, как остановить это. Я пытаюсь разрешить каждой форме управлять тем, как она визуализируется путем переопределения метода Render.
Любые идеи о том, как достичь этого?
Может быть, вы хотите, чтобы показать нам код, который создает векторные элементы? –
Проблема и решение почти идентичны этому вопросу http://stackoverflow.com/questions/1230006/. Как там, у вас есть вектор (struct содержащий а) конкретный базовый класс, который вы должны создавать с помощью * slicing * производных классов, если вы ожидаете вызова Rect :: Render. –