Witam. Qt.
Pewnie zapytam o jakąś oczywistość, ale nie znalazłem konkretnej odpowiedzi w sieci na pytanie które chcę zadać ( albo nie wiedziałem, która jest właściwa i po prostu nie zwróciłem na nią uwagi).
Nie jest mi to absolutnie potrzebne do działania programiku który robię ( bo działa), ale chciałbym wiedzieć "dlaczego tak".
Do rzeczy ( do pytania jest ważna tylko ostatnia część).
Piszę sobie gierkę planszową i używam tam obiektów QLineF do wyznaczenia sobie toru pocisku pod kątem ( droga może być linią łamaną poprzez kilka węzłów, nie chcę się w to zagłębiać, ale ważne jest to, że wyznaczam sobie najkrótszą drogę pocisku, więc robię kilka obiektów QLineF do porównywania długości drogi-> wtedy wybieram najkrótszą).
QLineF mojaNajkrotszaLinia;//taka nazwa na potrzeby forum
mojaNajkrotszaLinia.setLine(0,0,1000,1000);//nadanie początkowej długości linii, żeby warunek z if mógł zostać spełniony
//utworzenie np. 4 QLineF pomiędzy środkiem jednostki gracza oraz węzłami
for (size_t i=0, n=4; i<n; i++){
QLineF *line = new QLineF(0,0,100,100);//wpisałem sobie stałe, bo cały konstruktor jest dosyć długi- pobiera długości z innych obiektów ( węzłów) z innych klas oraz współrzędne ich środków- wstawiłem taki, żeby nie robić spagetti
//dopasowanie najkrótszej trasy poprzez porównanie dlugosci mojaNajkrotszaLinia oraz line
if (line->length()<mojaNajkrotszaLinia.length()){
mojaNakrotszaLinia.setLine(line->x1(),line->y1(),line->x2(),line->y2());
}
//PYTANIE
//usuniecie line ( byla tylko na potrzeby sprawdzenia czy moze trasa bedzie krotsza)
delete line;
qDebug()<<line->length(); (poprawka)
}
//dalej jakis kod
moje pytanie-> po usunięciu line za pomocą delete, wciąż mogę wywołać qDebug() z odniesieniem do line ( która została już usunięta). Oczywiście wynik który otrzymuję to "0". Pytanie, dlaczego nie dostaję żadnego błędu o odniesieniu do obiektu który został usunięty i mogę zażądać wykonania na nim operacji typu (poprawka)line->length(); itp? Gdyby ktoś mógł rzucić jednym zdaniem i oświecić nieprogramistę:)