【发布时间】:2014-08-05 14:19:09
【问题描述】:
不知何故,我只是不断收到此错误:
player.cpp(6):错误 C2143:语法错误:缺少 ';'在'。'之前
这是头文件
#ifndef Enemy
#define Enemy
#include "SDLGameObject.h"
class Enemy : public SDLGameObject
{
public:
Enemy(const LoaderParams* pParams): SDLGameObject(pParams) {}
void draw();
void update();
void clean() {}
};
#endif
$这里是 Enemy.cpp 文件:
#include "Enemy.h"
void Enemy::draw()
{
SDLGameObject.draw();
}
void Enemy::update()
{
m_x -= 1;
m_currentFrame = int(((SDL_GetTicks() / 100) % 6));
}
$这里是 SDLGameObject.h,它是 Enemy 的基类
#ifndef __SDLGameObject__
#define __SDLGameObject__
#include "GameObject.h"
#include <string>
class SDLGameObject : public GameObject
{
public:
SDLGameObject(const LoaderParams* pParams);
virtual void draw();
virtual void update();
virtual void clean();
protected:
int m_x;
int m_y;
int m_width;
int m_height;
int m_currentRow;
int m_currentFrame;
std::string m_textureID;
};
#endif
而GameObject.h只是SDLGameObject.h的抽象基类
我不确定是否包含它,但似乎错误在于 Enemy.cpp 文件。
非常感谢您的帮助,因为我在这方面还很陌生。谢谢大家:)))
【问题讨论】:
-
您已将
Enemy定义为空。你的班级将如何工作?在另一个文件中,您使用reserved identifier。 -
你
#define Enemy然后你使用Enemy。尝试#define ENEMY_H或您不想使用的其他名称。 -
根据您的编译器,您可能可以用
#pragma once替换标头保护。取决于您是否关心其他编译器,因为它不是普遍支持的。