Witam serdecznie,
piszę pewną aplikację okienkową w C++ oraz SFML i zastanawiam się sposobem implementacji takich klas jak m.in. okno oraz dźwięk.
Klasy te będą używane w wielu innych klasach. Główna pętla mojego programu wygląda tak:
int main() { Flashcards flashcards; Window window; IState* state = new StateMenu(flashcards,window); while(!state->toExit()) { state->update(); state->render(); if (state->getStateMenu()) state = new StateMenu(flashcards,window); else if (state->getStateOptions()) state = new StateOptions(flashcards,window); else if (state->getStateManage()) state = new StateManage(flashcards,window); else if (state->getStateStart()) state = new StateStart(flashcards,window); } return 0; }
Moja aplikacja jest podzielona na stany. Tak jak widać, za każdym razem muszę przesyłać obiekt flashcards oraz window do konstruktora stanu (a w przyszłości będę musiał przesyłać jeszcze obiekt klasy odpowiedzialnej za dźwięk i może coś jeszcze), poza tym, chcąc np. użyć klasy dźwięku w podklasach klasy State, znowu muszę obiekt przesyłać przez referencję - jest to bardzo niewygodne.
Właśnie tego przesyłania chcę uniknąć - Window, Flashcards oraz Sound będą miały tylko 1 instancję.
Chciałbym używać tych 3 klas w dowolnej klasie należącej do mojego programu, bez potrzeby przesyłania doń obiektu - czy mam kombinować ze statycznością, stworzyć Singleton lub jeszcze coś innego?
Co do Singletona, w jaki sposób miałaby wyglądać jego implementacja? W sieci nie znalazłem niczego co przybliżyło by mnie do znalezienia rozwiązania, może Wy znacie jakieś pomocne materiały?
Serdecznie pozdrawiam!