Coding Global Background
Coding Global

Need a little help with my Singleton class

Archived a year ago
1 messages
0 members
a year ago
Open in Discord
A
Yuuki
Verified

Hi! <:Gura_Wave:1060855881610313798> Could someone help out with my singleton class? It seems correct to me but it keeps creating new instances. ```cpp class FrameService { protected: FrameService() = default; ~FrameService() { for (auto& frame : frames) { cairo_surface_destroy(frame.second); } } static FrameService* instance_; static std::mutex mutex_; public: FrameService(FrameService& other) = delete; void operator=(const FrameService&) = delete; static FrameService* getInstance(); void preloadFrames(pqxx::connection* conn) { // these will set the frames map loadLocalFrames(); loadDatabaseFrames(conn); } private: std::unordered_map<std::string, cairo_surface_t*> frames; }; FrameService* FrameService::instance_ = nullptr; std::mutex FrameService::mutex_; FrameService* FrameService::getInstance() { std::lock_guard<std::mutex> lock(mutex_); spdlog::info("Getting FrameService instance"); if (instance_ == nullptr) { spdlog::info("Creating FrameService instance"); instance_ = new FrameService(); } spdlog::info("Returning FrameService instance"); return instance_; }``` Then in different files across the project I'm using `FrameService* frameService = FrameService::getInstance();` And I keep getting: ``` [2024-10-20 23:43:43.449] [info] Getting FrameService instance [2024-10-20 23:43:43.449] [info] Creating FrameService instance [2024-10-20 23:43:43.449] [info] Returning FrameService instance [2024-10-20 23:43:43.458] [info] Getting FrameService instance [2024-10-20 23:43:43.458] [info] Creating FrameService instance [2024-10-20 23:43:43.458] [info] Returning FrameService instance ```

Replies (1)