Cpp problem z tablicą w VS

0

Witam,
mam następujący problem, program w code bloksie działa bez żadnych problemów, natomiast w visual studio wywala błąd w linijce trzeciej, z tych co podałem. W mainie wcześniej oczywiście podaje wszystkie potrzebne dane.

 
    int wys=x.wysokosc;
    int szer=2*x.wysokosc -1;
char tab[szer][wys];

Następujące błędy:
error C2057: oczekiwano stałego wyrażenia
error C2466: nie można przydzielić tablicy stałego rozmiaru 0
error C2087: "tab" : brak indeksu dolnego
error C2133: "tab" : nieznany rozmiar

Jak mogę się pozbyć owych błędów ?

4

C++ nie pozwala na zdefiniowanie tablicy zmiennego rozmiaru. Czyli szer i wys muszą być stałymi, a nie zmiennymi. Jeśli potrzebujesz tablicy zmiennego rozmiaru, to możesz korzystać z vector<vector<char>> albo (gorsza alternatywa) zdefiniować dynamiczną za pomocą new.

CodeBlocks łyknął tamten kod, bo gcc (czyli kompilator, z którego korzysta CodeBlocks) ma rozszerzenia, które akceptują takie tablice. Niemniej jak sam się przekonałeś, nie należy korzystać z tego, chyba że wiesz co robisz.

0

Tej tablicy potrzebuje chwilowo, w tej sytuacji najodpowiedniej będzie chyba utworzyć dynamiczną. Dynamiczną można tworzyć o rozmiarze zmiennych bez problemu? Chwilowo jestem poza zasiegiem laptopa.

1

Użyj std::vector. Co do problemów napisałem o tym jakiś czas temu: http://kaczus.ppa.pl/art/Skrzynia_porad,18.html#vla

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