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!