C++ przekazywanie obiektów

0

Witam.

Jest taki problem:
mam funkcję createObj(); w której tworzone są obiekty klasy C1 i wszystko gra.

void createObj (void)
{
C1 obj1, obj2;
}

Ale zaszła konieczność wystawienia ich na zewnątrz funkcji createObj();
w taki sposób że do funkcji wchodzi obiekt Kontener, który na metodę add();
która jako argument przyjmuje wskaźnik na obiekt.
Wewnątrz klasy Kontener przechowywane są wskaźniki na obiekty.

void createObj (Kontener &kon)
{
C1 obj1, obj2;

kon.add (&obj1);
kon.add (&obj2);
}

Po wyściu z funkcji createObj(); obiekty klasy C1 są niszczone, wskaźniki do nich
pokazują na jakieś śmieci.
Pytanie więc jak to najlepiej rozwiązać??

Pozdrawiam.

0
auto object = new Object();
container.add(object);
container.add(new Object());
0

Utworzyć te obiekty operatorem new?
Te obiekty, które tworzysz, są obiektami lokalnymi umiejscowionymi na stosie i po wyjściu z funkcji są niszczone, dlatego dostajesz śmieci pod tym adresem, który przekazujesz funkcji add. Więc najlepiej je utworzyć operatorem new i przekazać do add adres zmiennej utworzonej na stercie.

0

Jeżeli: typedef vector<C1> Kontener;
to: kon.add (obj1);
i brak problemów.

0

Jeżeli: typedef vector<C1> Kontener;
to: kon.add (obj1);
i brak problemów.

Ale jest tak:
typedef vector<C1*> Kontener;

i nie mam możliwości zmian w klasie Kontener;

1 użytkowników online, w tym zalogowanych: 0, gości: 1