mając
wxArrayString **tab;
jak powołać do "życia" tą tablicę i jej używać?
mam grid'a i chcę mieć dla każdej komórki zmienną wxArrayString* (która przechowa stado potrzebnych mi wxString'ów)...
robię coś takiego:
tab = new wxArrayString *[7]; //ten rozmiar zawsze ma 7
int rows = WxGrid1->GetNumberRows(); //ten rozmiar jest zmienny,ale to nie istotne
for(int x=0; x<7; x++)
{
plan[x] = new wxArrayString [rows];
for(int y=0; y<rows; y++)
{
tab[x*rows+y] = new wxArrayString(); /////////BŁĄD
//tutaj już powinienem móc używać tej zmiennej i robić:
tab[x*rows+y]->Add(_T("napis"));
...
powyższe wymotałem z tego co udało mi się znaleźć na temat tworzenia tablic (zielony w tym nie jestem) ale zauważyłem że przy tym typie danych tablica 2D sprawia jakieś problemy i nie mogę dojść co jest grane
wcześniej udało mi się jakoś ją zainicjować i używać (być może przez przypadek działało bo miałem konkretne rows=8 podane)... ale niestety kod przenosiłem w inne miejsce i po wprowadzeniu poprawek mogłem (musiałem?) coś zmienić, że mi teraz wywala błędy w tej pętli...
co dziwne (pewnie na to zwrócicie uwagę) nie stosuję tu tab[x][y] tylko tab['jakaś_kombinacja'] i szczerze mówiąc nie wiem czemu jestem do tego zmuszony :/
przytab[x][y] = new wxString();
dostaje komunikat, że: błędna konwersja z wxArrayString* do int'a
i to w tej linii się wywala program, jeśli zmienię [xrows+y] na [yrows+y] (co jest nie logiczne, chcąc zachować kolejność indeksowania z krokiem 1) to się nie wywala, ale tworzy mi zmienne pod indeksami które są od siebie "odległe" o krok nie 1 a np 8
pozbywanie się **tab robię przez:
for(int x=6; x>0; x--)
{
delete [] tab[x];
}
delete [] tab;
tu się program wywala jeśli coś źle wykonam przy tworzeniu **tab (np przy mieszaniu ze wskaźnikiem elementu), ale generalnie wydaje mi się że niszczenie zmiennej jest dobrze napisane, chociaż może zastanawiać brak wykonania się kodu "delete [] tab[0]" ... ale tym się pomartwię później, kiedy tab się poprawnie będzie tworzył