Need a little help with my Singleton class
Archived a year ago
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
```
