[c++]vector obiektów jako parametr metody

0

Mniej wiecej jak w temacie - jak dodać jako parametr metody vector obiektów innej klasy?

class klasaA
{

	void metoda(vector<klasaB> test)
	{
	};
};
class klasaB
{
};

int main(){
vector< klasaB*> nazwa;
klasaA nazwa2;
nazwa2.metoda(nazwa);
};

Tu wywala mi undeclared identifier

1

skąd klasa A może wiedzieć o istnieniu klasy B? Musisz przed klasą A poinformować kompilator o tym, że B wystąpi w programie i może się jej spodziewać. Wystarczy dodać "class B;" przed A i powinno pomóc. Poza tym vector'y radzę przekazywać przez referencję bo tworzenie kopii lokalnych nie należy do szybkich rozwiązań.

0

no i vector<klasaB> to nie to samo co vector<klasaB*>

0

A przede wszystkim przekazuj vector przez (stałą) referencję.

0

Ale jak będzie stała referencja to będę mógł .pushback-ować coś do vectora?

jak mam powiedzmy

vector< obiekt*> obiekty;
obiekty.push_back(new obiekt());

To jak zrobić aby w klasie mojej móc też push_back'a uzywać na vectorze?

0

tak jak napisałem, referencja jeśli vector, który przekazujesz ulega zmianie. W innym wypadku jeśli tylko chcesz go przeglądać to stała referencja. Tak czy siak nie próbuj nawet przez wartość go przekazywać bo to się nie opłaca.

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