Shape.hC++ méthode redéfinie pas appelé
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;
};
Utilisé comme ceci:
std::vector<Graphics::ShapePointPair> theShapes = theSurface.getList();
for(int i = 0; i < theShapes.size(); i++) {
theShapes[i].shape.Render(theShapes[i].location);
}
Ce code finit par appeler Forme :: Render et pas Rect :: Render
Je suppose que c'est parce que ça donne une forme au Rect, mais je n'ai aucune idée de comment l'arrêter. J'essaie de laisser chaque forme contrôler comment elle est rendue en surchargeant la méthode Render.
Des idées sur la façon d'y parvenir?
Peut-être que vous voulez nous montrer le code qui crée les éléments vectoriels? –
Le problème et la solution sont presque identiques à cette http://stackoverflow.com/questions/1230006/ question. Comme là, vous avez un vecteur de (struct containting a) classe de base concrète, que vous devez créer en * tranchant * des classes dérivées si vous attendez que Rect :: Render soit appelé. –