DtkCore
DTK Core module
dsingleton.h
1// SPDX-FileCopyrightText: 2016 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DSINGLETON_H
6#define DSINGLETON_H
7
8#include "dtkcore_global.h"
9
10DCORE_BEGIN_NAMESPACE
11
44template <class T>
45class LIBDTKCORESHARED_EXPORT DSingleton
46{
47public:
48 QT_DEPRECATED_X("Use ref")
49 static inline T *instance()
50 {
51 static T *_instance = new T;
52 return _instance;
53 }
54
55 static T& ref()
56 {
57 static T instance;
58 return instance;
59 }
60
61 DSingleton(T&&) = delete;
62 DSingleton(const T&) = delete;
63 void operator= (const T&) = delete;
64
65protected:
66 DSingleton() = default;
67 virtual ~DSingleton() = default;
68};
69
70DCORE_END_NAMESPACE
71
72#endif // DSINGLETON_H
Definition: dsingleton.h:46