Wektor w klasie szablonowej

0

W moim programie mam klasę szablonową siec, w której znajduje się wektor na obiekty typu wzorcowego. Istnieje funkcja pozwalająca na tworzenie i dodawanie obiektów do wektora:

template <class Type>
void siec<Type>::nowe(string d)
{
	kino kzw(d);
	kina.push_back(kzw);
}

Używana gdy chcę dodać obiekt typu kino. Program kompiluje się dobrze dopóki później nie wywołuję tej funkcji:

	switch (index[0]){
		case '1':
			nowe(podana);
			break;

Gdzie podana jest stringiem. W takiej sytuacji kompilator wyrzuca całą masę błędów. Co robić?

0

Mały update, wyrzucenie switchy nie działa. Błąd brzmi no matching function to call for kino::kino(const &kino) i pochodzi z pliku vector.tcc. Co dziwne kompilator nie znajduje tego błędu na wywołaniu konstruktora, a w push backu.

0

Brak konstruktora kopiującego klasy kino. Dorób go i będzie git.


p.s. tak na przyszłość, od razu podawaj treść błędów, zaoszczędzi to wszystkim czasu.

0

Mam konstruktor kopiujący, tyle że nie przekazuje mu consta, a zwykłą referencję. Inaczej nie działają mi iteratory do wektora z obiektu który kopiuję i funkcja dostep. Wygląda to tak:

 kino::kino(const kino &wzor)
 {
	#ifdef TESTPR1
	cout << "Konstruktor kopiuj±cy kina:" << endl;
	#endif
	nazwa = wzor.nazwa;
	int x, y;
	wzor.oekran.dostep(x, y);
	oekran.nowewymiary(x, y);
	string ktyt, krez, kgat;
	if (wzor.repertuar.empty() == 0)
	{
		vector<seans*>::iterator iter1;
		vector<seans*>::iterator iter2;    
		iter1 = wzor.repertuar.begin();
		iter2 = wzor.repertuar.end();
		for (; iter1 != iter2; iter1++)
		{
			(*iter1)->wyciag(ktyt, krez, kgat);
			film *ofilm = new film;
			ofilm->wrzut(ktyt, krez, kgat);
			repertuar.push_back(ofilm);
		}
	}
}

I w tej wersji na iteratorach dostaje mocno długi błąd o braku operatora =. Funkcja dostep:

void ekran::dostep(int &x, int &y)
{
	x = wysokosc;
	y = szerokosc;
}

Uzywam jej, bo wysokosc i szerokosc są private i tylko tak mogę się do nich dostać.

0

Inaczej nie działają mi iteratory do wektora z obiektu który kopiuję i funkcja dostep.

vector<seans*>::const_iterator iter1 = wzor.repertuar.begin();
vector<seans*>::const_iterator iter2 = wzor.repertuar.end();
0

Ruszyło, jeszcze tylko błąd który próbowałem nieskutecznie obchodzić przy użyciu wskaźników.
Przy funkcji dostęp: passing const ekran as (this) argument of dostep discards qualifiers

EDIT. Problem rozwiązany. Ogromne dzięki za pomoc.

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