1

私は C++ と SFML 2.0 を使用して学校のプロジェクトに取り組んでいます。それは火曜日に予定されており、最近この問題に遭遇しました。最新のコール スタックの場所に矢印を付けました。これらは、何か問題があると思われるコード部分です。私はC ++も初めてで、多くのことを間違っていることを知っています。

これは私のBackgroundクラスにあり、すべてのタイルをロードし、それらの位置とタイルタイプなどを設定します。

クラスGetWayPointListにタイルのベクトルを返しますEnemyManager

void Background::Load(QuadTree * quadTree) {

        int tempTiles[32][32] = {... Lots of 1's and 0's in here };

        for(int i = 0; i < 32; i++)
        {
            for(int j = 0; j < 32; j++)
            {
--->                    tile[j][i]->tileType = tempTiles[j][i];
                    tile[j][i]->setPosition(sf::Vector2f((float)(i*32),(float)(j*32)));
                    if(tile[j][i]->tileType == 1)
                    {
                        quadTree->AddObject(tile[j][i]);            
                    }

                else if(tile[j][i]->tileType == 0)
                {
                    tile[j][i]->distanceFromStart = INT_MAX;
                    tile[j][i]->parent = NULL;

                    vector<Tile*> tempTiles;
                    if(tile[j+1][i]->tileType == 0)
                        tempTiles.push_back(tile[j+1][i]);
                    if(tile[j-1][i]->tileType == 0)
                        tempTiles.push_back(tile[j-1][i]);
                    if(tile[j][i+1]->tileType == 0)
                        tempTiles.push_back(tile[j][i+1]);
                    if(tile[j][i-1]->tileType == 0)
                        tempTiles.push_back(tile[j][i-1]);
                    tile[j][i]->setSuccessors(tempTiles);
                    tilesList->push_back(tile[j][i]);
                }
            }
        }
    }

vector<Tile*>* Background::GetWayPointList()
{
    return tilesList;
}

コールスタック自体は言うTileShooter v0.1.exe!Background::Load(QuadTree*quadTree) Line 68 + 0x2e bytes. 68行目は矢印のある場所です。

さらにコード/情報が必要な場合は、言ってください。何が間違っている可能性があるかについてのポイントは、非常に高く評価されます。よろしく、 フレドリック・W


編集

私はいくつかのコードを編集しましたtile[j][i] = new Tile();

void Background::Load(QuadTree * quadTree) {

        int tempTiles[32][32] = {... Lots of 1's and 0's in here };

        for(int i = 0; i < 32; i++)
        {
            for(int j = 0; j < 32; j++)
            {
                    tile[j][i] = new Tile();
                    tile[j][i]->tileType = tempTiles[j][i];
                    tile[j][i]->setPosition(sf::Vector2f((float)(i*32),(float)(j*32)));
                    if(tile[j][i]->tileType == 1)
                    {
                        quadTree->AddObject(tile[j][i]);            
                    }

                else if(tile[j][i]->tileType == 0)
                {
                    tile[j][i]->distanceFromStart = INT_MAX;
                    tile[j][i]->parent = NULL;

                    vector<Tile*> tempTiles;
---->                   if(tile[j+1][i]->tileType == 0)
                        tempTiles.push_back(tile[j+1][i]);
                    if(tile[j-1][i]->tileType == 0)
                        tempTiles.push_back(tile[j-1][i]);
                    if(tile[j][i+1]->tileType == 0)
                        tempTiles.push_back(tile[j][i+1]);
                    if(tile[j][i-1]->tileType == 0)
                        tempTiles.push_back(tile[j][i-1]);
                    tile[j][i]->setSuccessors(tempTiles);
                    tilesList->push_back(tile[j][i]);
                }
            }
        }
    }

vector<Tile*>* Background::GetWayPointList()
{
    return tilesList;
}

それは実際には解決しませんでしたが、エラーを下に移動しました。コールスタックの最新の呼び出しがある場所に矢印を移動しました。

4

1 に答える 1