Problem z przypisaniem wartosci do zniennej typu wyliczeniowego

0

Witam. Uczę się programowania w c++. Korzystam z ebooka "Od zera do gier kodera". Jestem na etapie programowania obiektowego. Jedno z zadań na koniec rozdziału wymagało napisania, a właściwe przepisania prostej wersji gry w kółko i krzyżyk z wersji strukturalnej na obiektową. Program napisałem, kompilacja przebiegła bez problemowo, ale po uruchomieniu programu i wywołaniu przez niego metody StanGry() należącej do klasy CPlansza pojawia się błąd o treści: Unhandled exception at 0x01141d2f in Object tic tac toe.exe: 0xC0000005: Access violation writing location 0x00000024. Nie mam pojęcia czy może to być spowodowane. Metoda w zależności od argumentów zwraca lub przypisuje wartość zmiennej m_StanGry należącej do zdefiniowanego przeze mnie wewnątrz klasy typu wyliczeniowego GAMESTATE. Dodam jescze, że korzystam z Microsoft Visual C++ Express 2010. Cały kod załadowałem w formacie txt tutaj: https://rapidshare.com/files/2123286194/TicTacToe.rar

2

Powiem Ci na rzeczywistym przykładzie co robisz źle: Wyobraź sobie, że Twoim życiowym celem jest trzymanie szkolnego wskaźnika i wskazywanie nim na ludzi. Wyobraź sobie, że ktoś zostawia Cię z zasłoniętymi oczami na pustym polu i karze Ci powiedzieć osobie na którą wskazujesz, żeby zaczęła rysować na ziemi planszę. Ty biedny z zamkniętymi oczami będziesz wołał i wołał, a i tak nikt tego nie zrobi. Wyobraź sobie, że Twój program też nie wie kto ma tą planszę narysować:
pPlansza = new CPlansza;

Biorąc pod uwagę, że masz w programie zmienne globalne i że karzesz nieistniejącym obiektom rysować planszę, prawdpodobnie Twój kod nie jest do końca obiektowy oraz zawiera więcej podobnych błędów.

0

Ale co w takim razie dokładnie robię źle? Czy mógłbyś dokładnie napisać co mam poprawić? Przecież utworzyłem wskaźnik, a przez wskaźnik operatorem new obiekt. Dlaczego, więc mówisz o nieistniejących obiektach?

1

pierwszy błąd jest w pliku main.cpp. Rzeczywiście tworzysz tam wskaźnik na obiekt planszy, ale samej planszy nigdzie nie utworzyłeś.

Twój kod jest trochę brzydko napisany. Zamiast klasy Plansza, lepsza by była klasa Gra, która zawierałaby w sobie obu graczy (zamiast globalnie). Kod powinno czytać się mniej więcej tak samo jak książkę, czyli wszystko powinno być uporządkowane.

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