Witam,
mam pytanie dotyczące żywotności wskaźników.
Załóżmy że:
void klasa::metoda(innaKlasa *ptr)
{
jeszczeInnaKlasa *wsk;
wsk = ptr->getJeszczeInnaKlasa();
//klasa zawiera np. wektor QVector<jeszczeInnaKlasa*>
wektor.push_back(wsk);
}
oraz:
class innaKlasa
{
(...)
QVector<jeszczeInnaKlasa> jeszczeInne;
(...)
jeszczeInnaKlasa* getJeszczeInnaKlasa()
{
return &jeszczeInne.last();
};
};
O ile dobrze rozumiem, to teraz w jakiejś metodzie klasy klasa mogę przeprowadzić zmiany na obiekcie wskazywanym przez jeszczeInnaKlasa a efekt przeniesie się na zawartość wektora w innaKlasa ?
[QVector to coś a'la STL-owy vector, tyle że z frameworku Qt.]
Pytam, ponieważ męczę się z projektem, w którym mam wiele klas z wektorami wskaźników w stylu wyżej wymienionej klasa i z tego co mi pokazuje debugger wskaźnik kończy życie po wyjściu z metody :/ [wskaźnik np. taki jak w pierwszym kodzie : *jeszczeInnaKlasa wsk].
Byłbym wdzięczny za kilka słów wyjaśnienia odnośnie wskaźników, które ogółem są mi znane, ale jak przychodzi do tego, że klasa 1 ma w sobie wskaźniki na klasę 2 a ta ma w sobie wskaźniki na inne obiekty klasy 2, która to z kolei klasa ma w sobie wskaźnik na klasę 3, to trudno jest wychwycić, gdzie to wszystko się gubi. Tym bardziej, że większość tych wskaźników jest przechowywana w wektorach (QVector), które są pozbawiane pewnych elementów, tudzież zwiększane o jakieś elementy. Popełniam pewnie gdzieś jakiś trywialny błąd, ale nie potrafię wyłapać jaki.
Aktualny problem mam z tym, że klasa ma w sobie listę wskaźników na klasa2, a ten z kolei ma wskaźnik na klasa [coś w stylu by rodzic znał swe dzieci, a dzieci rodzica] i w momencie gdy obiekt klasa2 zmienia rodzica [w obrębie tej samej klasy] to po przypisaniu mu wskaźnika na nowego rodzica, po wyjściu z funkcji przypisującej rodzica rodzic ten jest jakby gubiony, tak jak zmienna lokalna po wyjściu z obrębu swego 'rejonu działania'.
Z góry dziękuję za pomoc.