• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Publiczne używanie typu wyliczeniowego ENUM

Cloud VPS
0 głosów
1,322 wizyt
pytanie zadane 27 kwietnia 2016 w C i C++ przez lukasz_m Obywatel (1,380 p.)

W jaki sposób wywoływać typ wyliczeniowy ENUM w innej klasie?

Deklaruję ENUM publicznie w klasie GameStates:

class GameStates
{

public:

enum GameState {MENU, GAME, EXIT};

GameState state;

};

I chciałbym ustawić powiedzmy wartość na state = MENU, ale  w innej klasie

 

 

1 odpowiedź

+3 głosów
odpowiedź 27 kwietnia 2016 przez criss Mędrzec (172,570 p.)
Przez operator zasięgu. Np. GameStates::MENU albo GameStates::GameState::MENU. Pojawia się tylko pytanie po co w takim razie ten enum jest zamknięty w klasie skoro zamierzasz go używać też w innych. No i co tu się właściwie stało. Chyba nie rozumiesz idei enumów..
komentarz 27 kwietnia 2016 przez criss Mędrzec (172,570 p.)
Jeśli tak robisz, to znaczy, że wrzuciłeś zupełnie inny kod o_O.. Wywołać tzn.? Pokaż kod, bo nie wiadomo o co ci chodzi. Używać enuma (typu) czy odwołać się do zmiennej typu <nazwa enuma> zadeklarowanej. Jeśli to drugie, to masz skopaną hierarchie klas i robisz to źle. To jest stan GRY i żadna klasa poza klasą obsługującą logike gry nie powinna być bezpośrednio zależna od tego stanu. To ta klasa Game ma na podstawie stanu odpowiednio sterować obiektami innych klas.
komentarz 27 kwietnia 2016 przez lukasz_m Obywatel (1,380 p.)
Chodzi mi o to żeby używać enuma w Main.cpp i w klasie Menu.cpp

Przy uruchomieniu programu status ustawia sie na MENU, uruchamia się menu, a gdy kliknę na "Play" to status powinien zmienić się na GAME i w Main.cpp instrukcja

switch case uruchamia game.runGame();

Main.cpp

http://wklej.org/id/2356004/

Menu.cpp

http://wklej.org/id/2356017/
komentarz 27 kwietnia 2016 przez criss Mędrzec (172,570 p.)

I to właśnie miałem na myśli mówiąc, że masz skopaną hierarchie. Dużo lepiej by było, gdyby klasa Menu jakąś metodą zwracała coś informująć o tym co zostało kliknięte. I na tej podstawie gra stwierdza co dalej zrobić. Coś w tym stylu.. 

Odpowiadając na twoje pytanie. Musiałbyś wrzucić ten state do osobnego pliku *.h i dopisać do deklaracji extern. Poszukaj w Google. Ale nie rób tego. Zmienne globalne to zło o powinieneś ich unikać. Napisz klase Game obsługującą logike - wszystko stanie się prostsze.

komentarz 30 kwietnia 2016 przez lukasz_m Obywatel (1,380 p.)
Rozwiązałem to w inny sposób ale masz racje - chyba mam złą hierarchię klas. Po prostu pisałem ten program na bieżąco  bez żadnego projektu i w miarę potrzeby dopisywałem nowe klasy.

Dzięki za pomoc
komentarz 30 kwietnia 2016 przez criss Mędrzec (172,570 p.)
Cóż.. też tak robie i to się troche mści, fakt :| Wystarczy zapamiętać, żeby klasy się nie przenikały a informacje przyjmowały i dawały poprzez metody publiczne.

Podobne pytania

0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 31 października 2016 w C i C++ przez PaulW Początkujący (470 p.)
0 głosów
4 odpowiedzi 327 wizyt
0 głosów
1 odpowiedź 371 wizyt
pytanie zadane 28 października 2016 w C i C++ przez PaulW Początkujący (470 p.)

93,467 zapytań

142,403 odpowiedzi

322,705 komentarzy

62,848 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...