У меня есть простой набор классов. Один из них - ButtonComponent
, где я хочу по существу использовать sf::RectangleShape
для визуального аспекта, а затем остальная часть ButtonComponent
будет обрабатывать такие вещи, как event Listeners. Проблема возникает в том виде, что если я наследую от sf::Drawable
в родительском классе, я должен реализовать класс draw()
(Component
), что означает, что дочерние классы реализуют родительские draw()
, а не функцию SFML draw()
. Есть ли какой-либо способ перестройки двух классов или способ вызова функции sf::RectangleShapes
?Вызов sf :: Функция рисования прямоугольникаShapes?
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);
};
«Есть ли способ перестроить два класса или способ вызова функции' sf :: RectangleShapes'? Что мешает вам называть 'sf :: RectangleShapes :: draw()' на самом деле? –
это частная функция ... – Matthew
Это личное, потому что оно должно быть вызвано только объектами рендеринга. Если вы хотите нарисовать чертеж, вам придется вызвать обратный: 'myRenderTarget.draw (myDrawable);' Затем он будет внутренне вызывать 'draw()' члена фактического drawable. – Mario