C/C++言語でRPGを作ってみるスレ2
■ このスレッドは過去ログ倉庫に格納されています
0215デフォルトの名無しさん
2005/07/21(木) 21:45:57仮想メンバ関数を多用しているのは、端的に言うと>>212の意味。
基底クラスなどでvirtual宣言している仮想メンバ関数は継承クラスで再定義できる。
>>203を例にとると、
static MoveableObject spriteTable[MAX_SPRITE_COUNT];
int eventLoop()
{
for(int i = 0; i < MAX_SPRITE_COUNT; i++){
spriteTable[i]->doMove();
}
return(returnCode);
}
void intialize()
{
memset(spriteTable, 0, sizeof(spriteTable));
spriteTable[0] = new MoveableObject();
spriteTable[1] = new UserObject();
spriteTable[2] = new NPCObject();
while(!exitFlag){
eventLoop();
}
}
こんな感じで使うとして、i==0の時はMoveableObjectクラスのdoMoveに制御がまわり、
i==1 -> UserObjectクラスのdoMove()
i==2 -> NPCObjectクラスのdoMove()に制御がまわる。
使う側はその実際のクラスがなんであれ基底クラスとして扱えば
実際の制御は派生クラスで行ってくれるという感じ。
詳しくは派生クラスとバーチャル関数辺りを調べれば出てくると思う。
■ このスレッドは過去ログ倉庫に格納されています