Ich habe eine einfache Reihe von Klassen. Einer von ihnen ist ein ButtonComponent
, wo ich im Wesentlichen sf::RectangleShape
für den visuellen Aspekt verwenden möchte und dann der Rest der ButtonComponent
würde Dinge wie Event-Listener behandeln. Das Problem kommt in der Form, dass, wenn ich erben von sf::Drawable
in der Elternklasse muss ich implementieren draw()
(Component
Klasse) was bedeutet, dass die Kindklassen implementieren die Eltern draw()
und nicht die SFML Shapes draw()
Funktion. Gibt es eine Möglichkeit, entweder die beiden Klassen zu restrukturieren oder eine Art, sf::RectangleShapes
Zeichenfunktion aufzurufen?Aufruf von sf :: RectangleShapes draw function?
Component.h
class Component : public sf::Drawable {
public:
Component();
virtual ~Component();
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const = 0;
};
class ButtonComponent : public sf::RectangleShape, public Component {
virtual void draw(sf::RenderTarget& target, sf::RenderStates states);
};
"Gibt es eine Möglichkeit, die beiden Klassen neu zu strukturieren oder die Zeichenfunktion' sf :: RectangleShapes' aufzurufen? " Was hindert Sie 'sf :: RectangleShapes :: draw()' tatsächlich? –
es ist eine private Funktion ... – Matthew
Es ist privat, weil es nur von Render-Zielen aufgerufen werden soll. Wenn Sie ein Zeichen zeichnen möchten, müssen Sie das umgekehrte Zeichen aufrufen: 'myRenderTarget.draw (myDrawable);' Dies ruft dann intern das Zeichen 'draw()' des aktuellen Zeichensatzes auf. – Mario