Need a little help with my Singleton class
Archiviert a year ago
A
Yuuki
Verified
Hi!
Could someone help out with my singleton class? It seems correct to me but it keeps creating new instances.
Then in different files across the project I'm using
And I keep getting:
Could someone help out with my singleton class? It seems correct to me but it keeps creating new instances.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
