C语言2143是什么错误,error C2143: syntax error : missing ';' before '*'错误

cEnemyMgr * mEnemyMgr;//敌机管理

定义了一个类,然后这句话报错,错误如题。

以下是这个类:

#pragma once

#include”cApp.h”

#include

#include

#include

#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

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  EnemyTypeMap;

static EnemyTypeMap mEnemyTypeMap;//用于管理敌机类型

typedef listEnemyList;

EnemyList mEnemyList;//敌机对象数列

typedef list

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分

需要前置声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值