Witam
Tworzę małą grę. Napisałem sobie, kawałek kodu: zawiera on na razie dwie klasy - jedna czysto wirtualna, a druga pochodna od niej. Następnie utworzyłem main() lokalną tablicę wskaźników (statyczną) do klasy bazowej i umieściłem w niej parę elementów klasy pochodnej.
Część kodu: (jeśli to jest za mało, żeby coś powiedzieć do dodam więcej, ale nie chcę też wklejać wszystkiego, bo to bez sensu...)
int main(void)
{
warrior* Army[2 * MAX_WARRIORS]; //MAX_WARRIORS = 50, warrior - czysto wirtualna klasa bazowa
Army[0] = new warInfantry(4, 6, 1, 0); //werInfanrty - klasa pochodna od klasy warrior
Army[1] = new warInfantry(7, 8, 2, 1);
Army[2] = new warInfantry(3, 5, 1, 2);
cout << *Army[0] << " " << *Army[1] << " " << *Army[2]; //tu wypisanie działa
/* ... parę deklaracji ...*/
Fulfilment[0] = Fulfilment[2] = 1; //znaczniki, gdzie są jakieś elementy w statycznej tablicy i jakiego gracza.
Fulfilment[1] = 2;
printBoard(Board, *Army, Fulfilment); // wypisanie - Tu się psuje
I funkcja:
void printBoard(const int Board[45][27], warrior* Army, const int Fulfilment[2 * MAX_WARRIORS])
{
int redInx = 0, blueInx = 0;
/* ...różne wypisania itd ... */
redInx = searchSoldiers(Fulfilment, 1, redInx); // funkcja sprawdza, gdzie w tablicy Fulfilment jest zaznaczona kolejna jednostka gracz 1(red)/2(blue)
//i podaje numer (-1 gdy nie ma kolejnych
if (redInx != -1)
cout << Army[redInx];// to wypisanie działa
else
cout << "brak";
blueInx = searchSoldiers(Fulfilment, 2, blueInx);
if (blueInx != -1)
cout << Army[blueInx]; //a to już nie
else
cout << "brak";
redInx++;
blueInx++;
}
}
Kod błędu:
Unhandled exception at 0x012D418C in BoardWars v2.exe: 0xC0000005: Access violation reading location 0x00000006.
Próbuję rozwiązać to od soboty, ale nie mam nawet pojęcia co nie działa. Nigdzie nie modyfikuję tablicy Army[], więc nie wiem czemu w main() działa, a potem nie.
Będę wdzięczny również za małe podpowiedzi.
Pozdrawiam
Piotr