私は 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;
}
それは実際には解決しませんでしたが、エラーを下に移動しました。コールスタックの最新の呼び出しがある場所に矢印を移動しました。