Witam,
Mam problem z odwołaniem się z jednej klasy do wskaźnika w innej klasie. Otóż jest taka klasa (w uproszczeniu):
class CSolidHoopsView : public CHoopsView, public HJoyStickListener
{
public:
BODY * bod[3] = {0,0,0};
}
a w niej tablica wskaźników bod. Potem wywołuję sobie funkcję tej klasy CSolidHoopsView z poziomu menu (to jest tylko wycinek kodu)
void CSolidHoopsView::OnDodajDodrzewa(){
MyBody = (BODY*)HA_Compute_Entity_Pointer(key, BODY_TYPE);
bod[nr_cechy] = MyBody;
}
I teraz chciałbym się do tego wskaźnika bod odnieść w klasie okna dialogowego CCechy,aby tam pobrać wartości. Tworzę sobie zatem wskaźnik view2 do klasy CSolidHoopsView
class CCechy : public CDialog, public WindowsTreeGraph
{
CSolidHoopsView * view2;
}
W konstruktorze inicjalizuję wskaźnik zerem, a w destruktorze niszczę.
W funkcji tej klasy CCechy chcę odnieść się do składowych tego obiektu poprzez wskaźniki
ff = view2->bod[data]->lump()->shell()->face();
I tu się pojawia problem, ponieważ na tej powyższej linijce program się zawiesza i mam błąd typu Access violation, a przy debugowaniu, gdy sprawdzam zawartość bod, to wszystkie wskaźniki mają wartość 0, a także mam
Unable to read memory tak jakby wskaźnik się gubił.
Gdy tę linijkę
ff = view2->bod[data]->lump()->shell()->face();
zamieszczę w funkcji tej samej klasy tzn. CSolidHoopsView, to wszystko działa jak należy.
Może mi ktoś podpowiedzieć co robię źle? Bo myślę, że ten sposób da się wykorzystać, bo np. przy próbie odwołania się poprzez wskaźnik view2 do zmiennej int błędu nie ma - wartość się pobiera. Problem jest ze wskaźnikami. Dodam, że obie klasy są w różnych plikach.
Zamieściłem tylko fragment kodu, bo zawiera on funkcje kernela graficznego.