class CFire
{
public:
int x,y;
bool die;
int speed;
int type;
void init(int cx,int cy,int ctype);
};class Mario
{
public:
int x,y;
int live;
int level;
long money;
int speed;
CFire *m_pFire[MAX_NPC];
void init();
void draw();
void move(int direct);
void createFire();
virtual ~Mario();
private:
int i;
};//执行这个成员函数就出错,为什么?
void Mario::createFire()
{
m_pFire[i] = new CFire;
m_pFire[i]->init(x,y,1);
i++;
}
{
public:
int x,y;
bool die;
int speed;
int type;
void init(int cx,int cy,int ctype);
};class Mario
{
public:
int x,y;
int live;
int level;
long money;
int speed;
CFire *m_pFire[MAX_NPC];
void init();
void draw();
void move(int direct);
void createFire();
virtual ~Mario();
private:
int i;
};//执行这个成员函数就出错,为什么?
void Mario::createFire()
{
m_pFire[i] = new CFire;
m_pFire[i]->init(x,y,1);
i++;
}
==>
CFire m_pFire[MAX_NPC];
{
public:
int x,y;
bool die;
int speed;
int type;
void init(int cx,int cy,int ctype);
CFire(); //添加一个构造函数
};class Mario
{
public:
int x,y;
int live;
int level;
long money;
int speed;
CFire *m_pFire[MAX_NPC];
void init();
void draw();
void move(int direct);
void createFire();
virtual ~Mario();
private:
int i;
};//执行这个成员函数就出错,为什么?
void Mario::createFire()
{
//m_pFire[i] = new CFire;
m_pFire[i]=new CFire(); //加个括号
m_pFire[i]->init(x,y,1);
i++;
}这样修改应该就可以了
Mario mac;
xxx()
{
mac.createFire();
}//定义成内部变量 就会出错(i=???),定义一个构造函数吧
xxx()
{
Mario mac;
mac.createFire();
}
还是改成 CFire **m_pFire吧,在初始化是分配空间
m_pFire = (CFire **)GlobalAlloc(GPTR, sizeof(CFire)*MAX_NPC);void Mario::createFire()
{
CFire * p = new CFire;
m_pFire[i] = p;
m_pFire[i]->init(x,y,1);
i++;
}
在编辑代码的时候,在输完m_pFire[i]->之后,应该能看到提示信息的,但是什么都看不到。这是什么原因?