From c6e37af7d1ff466df2b3c8e28ccdaf8c26c14fa3 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 18 Apr 2026 14:02:01 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20fase=205=20=E2=80=94=20singletons?= =?UTF-8?q?=20a=20std::unique=5Fptr=20(elimina=20new/delete=20manual)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 5 singletons afectats: Audio, Screen, Director, Resource::Cache, Resource::List. - static T* instance → static std::unique_ptr instance - init(): new T() adoptat immediatament per unique_ptr (ownership RAII) - destroy(): instance.reset() (sense delete manual) - get(): retorna instance.get() - Destructors moguts a public perquè std::default_delete hi pugui accedir (ctors privats + copy/move deleted → encapsulació efectiva mantinguda) Ordre de destrucció preservat: SDL_AppQuit segueix cridant destroy() en l'ordre invers a init() — la RAII automàtica no s'activa fins al final del programa (LIFO de variables static). Co-Authored-By: Claude Opus 4.7 (1M context) --- source/core/audio/audio.cpp | 11 ++++------- source/core/audio/audio.hpp | 5 +++-- source/core/rendering/screen.cpp | 9 ++++----- source/core/rendering/screen.hpp | 5 +++-- source/core/resources/resource_cache.cpp | 11 ++++------- source/core/resources/resource_cache.hpp | 5 +++-- source/core/resources/resource_list.cpp | 11 ++++------- source/core/resources/resource_list.hpp | 5 +++-- source/core/system/director.cpp | 9 ++++----- source/core/system/director.hpp | 8 +++++--- 10 files changed, 37 insertions(+), 42 deletions(-) diff --git a/source/core/audio/audio.cpp b/source/core/audio/audio.cpp index 633a767..d25dd0e 100644 --- a/source/core/audio/audio.cpp +++ b/source/core/audio/audio.cpp @@ -24,19 +24,16 @@ #include "game/options.hpp" // Para Options::audio // Singleton -Audio* Audio::instance = nullptr; +std::unique_ptr