gpt4 book ai didi

c++ - 错误 C2143 : missing ';' before '*'

转载 作者:可可西里 更新时间:2023-11-01 18:36:19 25 4
gpt4 key购买 nike

您好,我在互联网上到处搜索答案,但找不到任何答案。

代码:

#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

我该如何解决这个问题?

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

最佳答案

本例中的问题似乎是 Sprite 未被识别为一种类型。仔细一看,你遇到的问题是你定义的:

#ifndef GAME_H
#define GAME_H
//...
#endif

在两个文件中。您可以在 .cpp 文件(或 Game.h 文件.. 第一个代码片段)中执行此操作,也可以在 Sprite.h 文件中执行此操作。问题在于,在编译器转到 Sprite.h 时,GAME_H 已经定义,因此,由于 #ifndef 例程,它不再编译 Sprite.h 文件。

要修复它,请像这样更改 Sprite.h 文件:

#ifndef SPRITE_H
#define SPRITE_H
//...
#endif

关于c++ - 错误 C2143 : missing ';' before '*' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com