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

0

Tworzę klasę

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

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)

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ć).

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

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