Ошибка SIGSEGV
Добавлено: 06 окт 2016, 20:33
Писал программу с классами. методы описывал вне классов с помощью пространства имен (в основном). Когда запустил, все тут же упало. С помощью дебаггера определил, что программа падает когда изменяется поле класса, у которого методы описаны снаружи.Возвращает ошибку SIGSEGV. В интернете узнал, что это код ошибки при неправильном обращении к памяти или что-то вроде этого. А в чем секрет краша я так и не понял, ведь методы вне классов можно описывать (по крайней мере нам так рассказывали).
вызов метода 448 строка
декларация класса строка 31
описание метода MoveCar строка 183
ну и сам файл, на всякий случай.
[ATTACH]2324[/ATTACH]
Заранее Спасибо за Помощь.
вызов метода 448 строка
Код: Выделить всё
OurCar->MoveCar(&MainMap);
Код: Выделить всё
class Car
{
float dir;
float speed;
float lth_half;
float wth_half;
float x;
float y;
float angle;
float dist;
public:
Car(float nx, float ny,float nwth, float nlth)
{
x = nx;
y = ny;
dir = 0.0;
speed = 0.0;
lth_half = nlth;
wth_half = nwth;
dist = sqrt(lth_half*lth_half +wth_half*wth_half);
angle = atan(wth_half/lth_half);
}
void MoveCar(Map *map);
void DrawCar();
float getX();
float getY();
float getDIR();
float getDIST();
float getANGLE();
float getWTH();
float getLTH();
};
Код: Выделить всё
void Car::MoveCar(Map *map)
{
float d_dir = 0.0;
if(GetAsyncKeyState(VK_UP))
speed = 0.01;
else if(GetAsyncKeyState(VK_DOWN))
speed = -0.01;
else
speed = 0.0;
if(GetAsyncKeyState(VK_LEFT) && speed)
d_dir = 1.0;
if(GetAsyncKeyState(VK_RIGHT) && speed)
d_dir = -1.0;
dir += d_dir;
x += cos(dir*PI/180.0)*speed;
y += sin(dir*PI/180.0)*speed;
if(map->CollisionCheck(this))
{
x -= cos(dir*PI/180.0)*speed;
y -= sin(dir*PI/180.0)*speed;
dir -= d_dir;
speed = 0.0;
}
}
[ATTACH]2324[/ATTACH]
Заранее Спасибо за Помощь.