Joa*_*zel 7 c++ visual-studio-2010
你好我在互联网上到处寻找答案,但我找不到任何答案.
码:
#ifndef GAME_H
#define GAME_H
#include "drawEngine.h"
#include "sprite.h"
#include <iostream>
using namespace std;
class Game
{
public:
bool run(void);
protected:
bool getinput(char *c);
void timerUpdate(void);
private:
Sprite* player; // this gives me C2143
double frameCount;
double startTime;
double lastTime;
int posx;
//int posy;
DrawEngine drawArea;
};
#endif
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
sprite.h
#ifndef GAME_H
#define GAME_H
#include "drawEngine.h"
#include "game.h"
enum
{
SPRITE_CLASSID,
};
struct vector
{
float x;
float y;
};
class Sprite
{
public:
Sprite(DrawEngine *de, int s_index, float x = 1, float y = 1, int i_lives = 1);
~Sprite();
vector getPosition(void);
float getX(void);
float getY(void);
virtual void addLives(int num = 1);
int getLives(void);
bool isAlive(void);
virtual bool move(float x, float y);
protected:
DrawEngine *drawArea;
vector pos;
int spriteIndex;
int numLives;
int classID;
vector facingDirection;
void draw(float x, float y);
void erase(float x, float y);
private:
};
#endif
Run Code Online (Sandbox Code Playgroud)
在这种情况下的问题似乎Sprite
是不被识别为类型.经过更好的观察后,您遇到的问题是您定义:
#ifndef GAME_H
#define GAME_H
//...
#endif
Run Code Online (Sandbox Code Playgroud)
在两个文件中.你可以在.cpp文件(或Game.h文件......第一个代码片段)中执行此操作,也可以在Sprite.h文件中执行此操作.问题是,在编译器进入Sprite.h时,GAME_H已经定义,因此,由于#ifndef
例程,它不再编译Sprite.h文件.
要解决它在Sprite.h文件中的更改,如下所示:
#ifndef SPRITE_H
#define SPRITE_H
//...
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16037 次 |
最近记录: |