C++ Überschriebene Methode nicht immer genannt

Form.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;
};

Wie folgt verwendet:

std::vector<Graphics::ShapePointPair> theShapes = theSurface.getList();

for(int i = 0; i < theShapes.size(); i++) {
    theShapes[i].shape.Render(theShapes[i].location);
}

Dieser code endet Aufruf Shape::Render und nicht Rect::Render

Ich gehe davon aus dies ist weil es wirft die Rect zu einem Shape, aber ich habe keine Ahnung, wie um ihn zu stoppen, dies zu tun. Ich versuche, jede Form kontrollieren, wie es gemacht wird durch überschreiben der Render Methode.

Irgendwelche Ideen auf, wie dies zu erreichen?

Schreibe einen Kommentar