继承工作与一个类,但不与另一个
问题描述:
我创建了两个类:播放器,子弹。两者都继承自相同的SFML类sf::Drawable和sf :: Transformable。继承工作与一个类,但不与另一个
第一类:
class Player :
public sf::Drawable, sf::Transformable
{
public:
Player();
~Player();
enum Direction {UP, DOWN, LEFT, RIGHT};
void update();
void move(Direction dir);
float getRotation();
sf::Vector2f getPosition();
void shoot();
bool moveStatus;
private:
sf::Sprite sprite;
sf::Texture texture;
float speed;
size_t frame;
sf::Clock animClock;
sf::Clock shootTime;
virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const;
};
二等:
class Bullet :
public sf::Drawable, sf::Transformable
{
public:
Bullet(float rot, sf::Vector2f pos);
~Bullet();
void update();
float getRotation();
sf::Vector2f getPosition();
void move(float x, float y);
private:
sf::Sprite sprite;
sf::Texture texture;
virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const;
};
我有一个问题virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const;
。在Player类中它正在工作,但是在Bullet类中不是。
答
您的问题是您在Bullet
类中缺少draw
方法的实际实施。
如果没有代码,很难说,但是您要么完全忽略它,要么可能在签名中有错字。
我看到了问题[链接](https://stackoverflow.com/questions/5416048/c-why-is-my-class-still-abstract)。但是我的声明是正确的,在一个类中它可以工作,但在另一个类中不是 –
您错过了在第二类中提供_all声明_以满足接口声明。 –
你有没有在子弹中定义'draw(sf :: RenderTarget&target,sf :: RenderStates states)'?这个功能的主体在哪里? – Chringo