Obiekt klasy vector sam się zeruje :?

Witam

W programie używam dwóch formatek (A i B). W headerze formy A mam zadeklarowany obiekt v klasy vector (typ jest strukturą zadeklarowaną w programie, wydaje mi się, że nie gra ona teraz ważnej roli).

Robię następujące rzeczy:

odpalam program

pojawia się forma A

wykonuję zdarzenie B->ShowModal()

na formie B klikam raz na Button1, co sprawia, że dodaję do wektora v jeden element

na zdarzenie B->OnClose, v.size() wynosi 1

po zamknięciu formy B v.size() wynosi 0

Ktoś może mi powiedzieć dlaczego sie tak dzieje?

OnClose wywołuje destruktor klasy B który wywołuje destruktor wektora.

Przecież wektor v jest zadeklarowany w klasie A, więc nie może ulec destrukcji.

Może, jeśli OnClose albo destruktor klasy B czyści(wywołuje destruktor) wektor klasy A.

Więcej IMHO nie można powidzieć bo podałeś zbyt mało szczegółów.

Więc jak zrobić, aby wektor v z klasy A nie uległ destrukcji? Jest on w niej zadeklarowany jako zmienna globalna. Skoro odwołuję się do niego w klasie B w sposób A->v = jakas_zmienna; (czyli myśle, że używam wskaźnika) to jego wartość po destrukcji B nie powinna ulec zmianie.

Lepiej podaj kod, z tego co mówisz nie powinno się zerować.

header klasy A:

public:

vector vKolory;

klasa B, zdarzenie OnClick przycisku

void __fastcall TB::btDodajClick(TObject *Sender)

{

   kolorRGB *temp = new kolorRGB(cbR->Text.ToInt(), cbG->Text.ToInt(), cbB->Text.ToInt());

   A->vKolory.push_back(*temp);

   delete temp;

}

Klasa B, zdarzenie OnClose

void __fastcall TB::FormClose(TObject *Sender, TCloseAction &Action)

{

  ShowMessage(IntToStr((int)A->vKolory.size())); // wyświetla ilość dodanych kolorów

}

wywołuję funkcję z innego pliku *.cpp jako parametr m.in podaję A->vKolory

void funkcja (A->vKolory) // wymagany argument vector v

{

  ShowMessage(IntToStr((int)v.size())); // zwraca 0

  ShowMessage(IntToStr((int)A->vKolory.size())); // zwraca -302055498

  .

  .

  .

}

Wyświetl to w funkcji OnCloseQuery() zamiast OnClose(), inne zdarzenie.