0
私は2つのクラス、Player、Bulletを作成しました。どちらも同じSFMLクラスsf::Drawableとsf :: Transformableから継承しています。1つのクラスで継承を行いますが、別のクラスでは継承しません。
ファーストクラス:
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クラスでは動作しません。
リンカが2つのエラーが返されます。
を私はstates
前の定義にアンパサンドを追加しようとしましたが、その後弾丸は抽象クラスとなっています。
[link](https://stackoverflow.com/questions/5416048/c-why-is-my-class-still-abstract)の質問がありました。しかし、私の宣言は正しいですし、あるクラスでは動作しますが、別のクラスでは動作しません。 –
2番目のクラスで宣言の_allをすべて提供することができませんでした。 –
Bulletに 'draw(sf :: RenderTarget&target、sf :: RenderStates states)の定義がありますか?この関数の本体はどこですか? – Chringo