0

我有一个 C++ 类,尽管我有另一个用类似语法编写的类,并且可以毫不费力地编译,但我一直收到此错误。

这是我的.h:

#ifndef FISHPLAYER_H
#define FISHPLAYER_H

#include "Player.h"


class FishPlayer : public Player
{
public:
    float xThrust;
    float yThrust;
    static FishPlayer* getInstance();
protected:
private:
    FishPlayer();
    ~FishPlayer();
    static FishPlayer* instance;
};

#endif

这是我的 .cpp :

#include "..\include\FishPlayer.h"

FishPlayer* FishPlayer::instance=0;  // <== I Get The Error Here

FishPlayer::FishPlayer()
{
    //ctor
    xThrust = 15.0f;
    yThrust = 6.0f;
}

FishPlayer::~FishPlayer()
{
    //dtor
}


FishPlayer* FishPlayer::getInstance() { // <== I Get The Error Here
    if(!instance) {
        instance = new FishPlayer();
    }
    return instance;
}

我已经找了一段时间了,它一定是大到我看不到的东西。

这是继承:

#ifndef PLAYER_H
#define PLAYER_H
#include "Ennemy.h"

class Player : public Ennemy
{
    public:
    protected:
        Player();
        ~Player();
    private:
};

#endif // PLAYER_H

还有更高的:

#ifndef ENNEMY_H
#define ENNEMY_H

#include "Doodad.h"

class Ennemy : public Doodad
{
    public:
        float speedX;
        float maxSpeedX;
        float speedY;
        float maxSpeedY;
        float accelerationX;
        float accelerationY;
        Ennemy();
        ~Ennemy();
    protected:
    private:
};

和超类

#include <vector>
#include <string>


enum DoodadType{FishPlayer,Player,AstroPlayer,Ennemy,DoodadT = 999};
enum DoodadRange{Close, Medium , Far};
enum EvolutionStage{Tiny, Small, Average, Large};

class Doodad
{
    public:
        float score;
        void die();
        EvolutionStage evolutionStage;
        DoodadRange range;
        Doodad();
        virtual ~Doodad();
        Doodad(Doodad const& source);
        std::vector<Animation> animations;
        double posX;
        double posY;
        std::string name;
        std::string currentAnimation;
        int currentFrame;
        DoodadType type();
        SDL_Surface getSpriteSheet();
        bool moving;
        void update();
    protected:
    private:
        SDL_Surface spriteSheet;
};
4

1 回答 1

5

看起来你FishPlayer用作枚举值Doodad.h

它与您要声明的类同名。这可能是问题的根源。

通常,最好使用FISH_PLAYER, 或Type_FishPlayer枚举值的命名方案以避免这样的冲突。

于 2012-12-17T21:26:09.907 回答