0
if(GetKeyState(VK_SPACE) && Player1.canFire == true)
{
    Player1.canFire = false;
    Player1.hasFired = true;
    Bullet Bullet1((Player1.Xpos + (Player1.Skin->GetWidth() / 2)), 
                    Player1.Ypos - ProjectileSkin->GetHeight() );
}
if(Player1.hasFired = true)
{
    Bullet1.Projectile->CopyTo(m_Screen, Bullet1.m_xPos, Bullet1.m_yPos);
    Bullet1.m_yPos -= 5;
}

私が言うところでは、定義されていないBullet1.Projectile->CopyToというエラーが表示Bullet1されますが、上記の if ブロックでインスタンス化しました。私は何を間違っていますか?

4

3 に答える 3

2

9行Bullet1目までに範囲外になります。Bullet1変数宣言をifステートメントの外に移動する必要があります。

ただし、とにかく初期化ifする必要がある場合、2番目のステートメントを配置する意味がまったくわかりません。Bullet1そう、

if(GetKeyState(VK_SPACE) && Player1.canFire == true)
{
    Player1.canFire = false;
    Player1.hasFired = true;
    Bullet Bullet1((Player1.Xpos + (Player1.Skin->GetWidth() / 2)), 
                Player1.Ypos - ProjectileSkin->GetHeight() );
    Bullet1.Projectile->CopyTo(m_Screen, Bullet1.m_xPos, Bullet1.m_yPos);
    Bullet1.m_yPos -= 5;
}
于 2012-09-20T18:04:18.850 に答える
0
Bullet Bullet1((Player1.Xpos + (Player1.Skin->GetWidth() / 2)), 
                    Player1.Ypos - ProjectileSkin->GetHeight() );

あなたの弾丸はローカル変数です。}で終わります。考えられる解決策は、ローカルに作成しないことです。または両方の関数に引数として送信します。

また、ここには重大な間違いがあります。

if(Player1.hasFired = true)

それは==であるべきです

于 2012-09-20T18:04:35.017 に答える
0

のスコープはブロックBullet1内のみです。IF他のブロックでも使用したい場合はIF、次のように外部で定義します。

Bullet Bullet1((Player1.Xpos + (Player1.Skin->GetWidth() / 2)), 
                Player1.Ypos - ProjectileSkin->GetHeight() );
if(GetKeyState(VK_SPACE) && Player1.canFire == true)
{
    Player1.canFire = false;
    Player1.hasFired = true;
}
if(Player1.hasFired = true)
{
    Bullet1.Projectile->CopyTo(m_Screen, Bullet1.m_xPos, Bullet1.m_yPos);
    Bullet1.m_yPos -= 5;
}
于 2012-09-20T18:04:50.247 に答える