Я использую C ++, code :: blocks (с включенными предупреждениями и проверил, чтобы убедиться) и SFML.
Я сам пытался найти ошибку, но я действительно не могу найти то, чтонеправильно.Я знаю, что означает сегфо, но это действительно меня озадачило.Могу добавить, что я новичок, но быстро учусь.
У меня есть основной основной класс void Engine
, в котором есть метод void RenderFrame
, который отображает каждый кадр приложения.Внутри указанного метода у меня есть этот код, который должен рисовать все плитки в окне рендеринга:
Tile* tile;
for (short y = 0; y < mapHeight; ++y) {
for (short x = 0; x < mapWidth; ++x) {
tile = currentLevel -> GetTile(x, y);
if (tile) {
tile -> Draw((x * tileSize), (y * tileSize), Wnd);
}
}
}
Метод GetTile должен возвращать плитку из std::vector<std::vector<Tile *> >
.Метод Draw только делает это:
void Tile::Draw(int x, int y, sf::RenderWindow *pWnd) {
sprite.SetPosition(x, y);
pWnd -> Draw(sprite);
}
Приложение компилируется просто отлично, но оно падает сразу после вызова sprite.SetPosition(x, y);
Это полный стек вызовов от отладчика:
#0 68701829 sf::Drawable::SetPosition(float, float) () (D:\Coding\C++\sfml\bin\debug\sfml-graphics.dll:??)
#1 004021F9 Tile::Draw(this=0x76ab8cd5, x=0, y=0, pWnd=0x3e3310) (D:\Coding\C++\sfml\include\Tile.cpp:12)
#2 00401D7E Engine::RenderFrame(this=0x3e3298) (D:\Coding\C++\sfml\include\Engine.cpp:106)
#3 00401B29 Engine::MainLoop(this=0x3e3298) (D:\Coding\C++\sfml\include\Engine.cpp:63)
#4 00401E27 _fu0___ZTIPKc(this=0x3e3298) (D:\Coding\C++\sfml\include\Engine.cpp:119)
#5 004022D6 main() (D:\Coding\C++\sfml\Main.cpp:8)
Надеюсь, этого достаточно для продолжения, и спасибо заранее.
Редактировать: О, и это из вывода отладчика.Program received signal SIGSEGV, Segmentation fault.
In sf::Drawable::SetPosition(float, float) ()
Не дает больше информации о проблеме.