当前位置: 代码迷 >> VC/MFC >> 《类的初始化有关问题》
  详细解决方案

《类的初始化有关问题》

热度:154   发布时间:2016-05-02 03:46:06.0
《类的初始化问题》
如下程序,编译的时候出错,说是Game()函数重载。因为类中有很多参数,请问该如何对这个Game类进行初始化?初始化时放在Game.h文件好,还是放在Game.cpp文件里好?

#pragma once
#include <afxwin.h>
#include"resource.h"
class Game   //Game类
{
private:
short numplane;//我方飞机数量
int back[15][12];//背景数组
int xStart, yStart;//飞机出现位置
bool iffire;//是否出现
int fire;//火力强度
public:
void DrawMessage(CDC* pDC, int width, int height);//
void FireOutIf();//
void shotmove();//
void Enemyshot();//
void Enemyplaneout();//
void Shot();//
void TransparentBitmap(HDC hdc, HBITMAP hbitmap, short xStart, short yStart, short xadd, short yadd, COLORREF cTransparentColor);//
Game();
COLORREF cTransparentColor;//透明色
CBitmap enemy;
CBitmap bmenemyshot;
CBitmap enemydead;//飞机爆炸位图
CBitmap bmshot;//我方子弹
CBitmap plane;//我方飞机
CBitmap bmfire;//火力位图
CPoint pointfire;//火力位置
};

Game:: Game()
{
int i, j;
plane.LoadBitmapW(IDB_BITMAP2);
bmshot.LoadBitmapW(IDB_BITMAP4);
enemy.LoadBitmapW(IDB_BITMAP3);
enemydead.LoadBitmapW(IDB_BITMAP5);
bmenemyshot.LoadBitmapW(IDB_BITMAP6);
bmfire.LoadBitmapW(IDB_BITMAP7);

cTransparentColor = RGB(192, 192, 192);
numplane = 5;
xStart = 5;
yStart = 10;
iffire = false;
fire = 0;
for (i = 0; i < 15; i++)//背景数组
for (j = 0; j < 12; j++)
back[i][j] = 0;
}
------解决思路----------------------
Game:: Game()
{
int i, j;
plane.LoadBitmapW(IDB_BITMAP2);
bmshot.LoadBitmapW(IDB_BITMAP4);
enemy.LoadBitmapW(IDB_BITMAP3);
enemydead.LoadBitmapW(IDB_BITMAP5);
bmenemyshot.LoadBitmapW(IDB_BITMAP6);
bmfire.LoadBitmapW(IDB_BITMAP7);

cTransparentColor = RGB(192, 192, 192);
numplane = 5;
xStart = 5;
yStart = 10;
iffire = false;
fire = 0;
for (i = 0; i < 15; i++)//背景数组
for (j = 0; j < 12; j++)
back[i][j] = 0;
}

放到cpp文件中
------解决思路----------------------
类的成员函数的定义,一般有两种写法,一种是与声明写在一块儿,即声明的时候就定义,所以是不能写在.h文件类域外面的!如WTL、CEF大多采用这种方式;

另一种就是声明与定义,定义写在cpp中,这样结构比较清晰,方便阅读和代码管理
------解决思路----------------------
放在.cpp的构造函数里面。初始化时,最好使用参数初始化列表进行初始化,这样的效率是最高的。
  相关解决方案