[c++]trójwymiarowy wektor jako pole klasy

[c++]trójwymiarowy wektor jako pole klasy
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Tworzę klasę

Kopiuj
class mapa
{
public:
	vector< vector< vector<char> > > plansza;
	int xplanszy;
	int yplanszy;

Pole plansza to trójwymiarowy vector przechowujący chary, xplanszy, yplanszy to szerokosci i wysokosc

Kopiuj
mapa(int x, int y)
	{
		xplanszy = x;
		yplanszy = y;
		vector< vector< vector<char> > > plansza (y);
		for(int i=0; i<y ;i++)
		{
			(plansza[i]).resize(x);

		}
	}

Taki wymyśliłem konstruktor, niby się kompiluje. Jednak jak się odwołuje do vectorów to wyskakuje mi vector subscript out of range np. w sytuacji gdy pisze potem metody typu: (korzystające z metod vectora)

Kopiuj
void rozmiar()
	{
		cout << "wysokosc wynosi: " << (plansza[0].size();
	}
void test() //tylko dla sprawdzenia, teoretycznie element 0,0 powinien byc vectorem<char> pustym
{
		if (plansza[0][0].empty())
		{
			cout << "dziala" << endl;
		}
		else
		{
			cout << "nie dziala" << endl;
		}
	}

Ktoś coś doradzi? Ew. podpowie jak stworzyć pole dwuwymiarowej tablicy zawierającej vector <char>, tworzonej dynamicznie (dam rade później program przerobić aby mi to działało bez problemu, jednak nie wiem jak coś takiego zrobić).

Xupicor
  • Rejestracja: dni
  • Ostatnio: dni
0

W konstruktorze przykrywasz nazwę i działasz na zmiennej lokalnej. Jeśli kompilujesz w GCC/MinGW - dodaj -Wshadow do opcji kompilatora, wychwyci Ci takie błędy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.