我最近选择使用SFML,并且我决定使用它作为一种学习经验。我已经定义了一个名为Ball
的类,它使用SFML绘制RectangleShape
。当我尝试使用window.draw()
函数将此自定义类型绘制到屏幕时,我收到错误,因为Ball
不是sf::Drawable
。我很感激这方面的帮助,是SFML的新手。
答案 0 :(得分:5)
要使用window.draw(object)
对象的类必须继承drawable interface并实现抽象的sf :: Drawable :: draw函数。
听起来像sf :: RectangleShape是Ball的成员。 SFML知道如何渲染形状,但不知道Ball本身。 Ball的课堂声明应如下所示:
class Ball : public sf::Drawable //,...
{
//...
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
//...
};
绘制应该像这样实现:
void Ball::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
//assuming m_shape is the sf::RectangleShape
target.draw(m_shape, states);
}