error C2143: syntax error : missing ';' before '*'错误

C语言 码拜 9年前 (2015-11-25) 1207次浏览
cEnemyMgr * mEnemyMgr;//敌机管理
定义了一个类,然后这句话报错,错误如题。
以下是这个类:
#pragma once
#include”cApp.h”
#include<map>
#include<list>
#include<string>
#include “cmovablemgr.h”
#include”IStrategy.h”
#include”cStrategyManager.h”
#include”ximage.h”
#include”cImgManager.h”
#include”IMovable.h“
#include”cImg.h”
#include”cEnemy.h”
#include<iostream>
using namespace std;
#ifdef UNICODE
#define tstring  wstring
#else
#define tstring std::string
#endif
struct EnemyType
{
cImg * img;
UINT hp;
};
//关卡脚本
struct  Script
{
double time;//敌机出现的时间
TCHAR type[20];//敌机的类型
UINT xpos;
UINT ypos;
TCHAR strategy[20];//敌机的攻击策略
TCHAR missileType[3][20];//一架敌机最多有三种子弹
};
class cEnemyMgr :
public cMovableMgr
{
protected:
RECT h;
typedef map <tstring, EnemyType> EnemyTypeMap;
static EnemyTypeMap mEnemyTypeMap;//用于管理敌机类型
typedef list<cEnemy *>EnemyList;
EnemyList mEnemyList;//敌机对象数列
typedef list<Script > EnemyScriptList;
EnemyScriptList mEnemyScript;//关卡脚本,用于控制敌机什么时候出现
public:
cEnemyMgr(void);
//创建一个敌机类型,并且指定该类敌机的图片,最大生命值
void CreateEnemyType(TCHAR *name, TCHAR *filename, UINT hp);
cEnemy *CreateEnemy(int x,int y, TCHAR *type);//在指定位置创建敌机
//统一更新全部的敌机,覆盖了cMovableMgr:: Update()
void Update(float deltaTime);//更新函数
//插入脚本,包含了时间地点类型等信息
//这里表示策略的STRA,以及三个子弹类型默认值为0,暂时不用
void AppendScript(float time, int x, int y, TCHAR *type , TCHAR*stra = NULL,
TCHAR * bulletType1 = NULL, TCHAR * bulletType2 = NULL,
TCHAR *bulletType3 = NULL);
BOOL CollisionDetect(RECT h);
public:
~cEnemyMgr(void);
};
这个是它的.cpp
#include “StdAfx.h”//这个一定要放在最上面,最上面,最上面!
#include “cBulletMgr.h”
cBulletMgr::cBulletMgr(void)
{
}
cBulletMgr::~cBulletMgr(void)
{
}
cBulletMgr::BulletMap  cBulletMgr ::mBulletMap;//子弹类型,静态变量外部定义
void cBulletMgr::CreateBulletType(TCHAR *typeName, TCHAR *filename, int xSpeed, int ySpeed, int power, float intervel)
{
TypeBullet type;
type.img = cImgManager::CreateImg(filename,0);
type.power = power;
type.xSpeed = xSpeed;
type.ySpeed = ySpeed;
type.Interval = intervel;
mBulletMap[typeName] = type;
}
void cBulletMgr::CreateBullet(UINT x, UINT y, tstring &typeName, float angle)
{
TypeBullet  type = mBulletMap[typeName];
int vx = type.xSpeed;
int vy = type.ySpeed;
float v = sqrtf(vx *vx +vy * vy);//子弹的速率
angle  = GetVectorAngle(vx,vy) +angle -90;//子弹飞的角度 = 自身的角度+飞机的偏角
vx = v *cos(angle / 180 *PI);
vy = v *sin(angle / 180 *PI);
cBullet *b = new cBullet(x,y,angle,vx,vy,type.power, type.img);
//构造子弹
mMovableList.push_back(b);
}
void  cBulletMgr::CollisionDetect(MovableList *el)
{
MovableList::iterator itr = el ->begin(),end = el ->end(),temp;
while(itr != end)
{
//遍历全部飞机
temp = itr ++;
cEnemy *p = (cEnemy *)(* temp);
CollisionDetect(p);//当前飞机与全部的子弹进行碰准过检测
if(p ->GetLife() < 0)
{
delete p;
el ->erase(temp);
}
}
}
void  cBulletMgr::CollisionDetect(cPlane *p)
{
MovableList::iterator itr =mMovableList.begin(),end = mMovableList.end(),temp;
while(itr != end)
{
RECT r;
//遍历全部子弹景星碰撞检测,发生碰撞,释放子弹,同时敌机失血
temp = itr ++;//temp,当前检测的子弹,itr指向下一个子弹
cBullet *b = (cBullet *)(* temp);
if(IntersectRect(&r, &(b ->GetRect()),&(p ->GetRect())))
{
p ->Bleed(b->GetPower());
delete(b);
mMovableList.erase(temp);
}
}
}
求帮助啊!
解决方案:15分
错误定位在哪行
你给的文件不全,不好帮你调试,你检查括号能否对称,还有语句能否完整,有没用分号结束
解决方案:10分
偶遇到相似问题都是用
“每次用/*…*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
解决方案:15分
需要前置声明

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明error C2143: syntax error : missing ';' before '*'错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)