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#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
49 QT_DEPRECATED_X("Use ref")
50 static inline T *instance()
51 {
52 static T *_instance = new T;
53 return _instance;
54 }
55#endif
56 static T& ref()
57 {
58 static T instance;
59 return instance;
60 }
61
62 DSingleton(T&&) = delete;
63 DSingleton(const T&) = delete;
64 void operator= (const T&) = delete;
65
66protected:
67 DSingleton() = default;
68 virtual ~DSingleton() = default;
69};
70
71DCORE_END_NAMESPACE
72
73#endif // DSINGLETON_H
Definition dsingleton.h:46