【初心者歓迎】C/C++室 Ver.16【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0767デフォルトの名無しさん
2005/05/06(金) 18:57:14CTaskを基底クラスにしで自機やら敵やら弾やらを派生してタスクリストをループさせることでゲーム全体を処理しています。
その中で弾と敵との当たり判定で
for (CTask *task=ActiveTask->Next, *next; next=task->Next, task!=ActiveTask; task=next)
{
if (task->Group==TASK_ENEMY)
{
Kill();
CEnemy* enemy=(CEnemy*)task; // ←ここ
enemy->Vit-=ShotStr;
とあるのですが、CEemyはCTaskからの派生クラスなので、CEnemy* enemy=(CEnemy*)task;はダウンキャストになると思います。
このダウンキャストは危険だと思うのですが。タスクシステムの参考にしていたのですが、dynamic_castを使ってNULLチェックを
した方がいいような気がするのですが、その必要はないのでしょうか?
キャストについて詳しい人がいたらよろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています