我最近选择使用SFML,并且我决定使用它作为一种学习经验.我已经定义了一个类Ball
,其中draw使用SFML绘制一个RectangleShape
.当我尝试使用该window.draw()
功能将此自定义类型绘制到屏幕时,我得到错误,因为Ball
不是sf::Drawable
.我很感激这方面的帮助,是SFML的新手.
要使用window.draw(object)
对象的类必须继承drawable接口并实现抽象的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); }