summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro J. Estébanez <pedrojrulez@gmail.com>2020-11-19 11:46:05 +0100
committerPedro J. Estébanez <pedrojrulez@gmail.com>2020-11-19 12:01:54 +0100
commite1150bd912bd6076b8a94544c0ec32f75344976e (patch)
tree1ce12d46168557010f5f4c5aa2eb83b4a6d23f8e
parenta3a3b02bed3137e0ccac2cbb544a71502a659b80 (diff)
Warn about singleton being a Reference
-rw-r--r--core/config/engine.cpp10
-rw-r--r--core/config/engine.h5
2 files changed, 11 insertions, 4 deletions
diff --git a/core/config/engine.cpp b/core/config/engine.cpp
index b0037ffb37..8e2ab094b0 100644
--- a/core/config/engine.cpp
+++ b/core/config/engine.cpp
@@ -219,3 +219,13 @@ Engine *Engine::get_singleton() {
Engine::Engine() {
singleton = this;
}
+
+Engine::Singleton::Singleton(const StringName &p_name, Object *p_ptr) :
+ name(p_name),
+ ptr(p_ptr) {
+#ifdef DEBUG_ENABLED
+ if (Object::cast_to<Reference>(p_ptr)) {
+ ERR_PRINT("A class intended to be used as a singleton must *not* inherit from Reference.");
+ }
+#endif
+}
diff --git a/core/config/engine.h b/core/config/engine.h
index 1d3d963b39..0d9aa02f28 100644
--- a/core/config/engine.h
+++ b/core/config/engine.h
@@ -41,10 +41,7 @@ public:
struct Singleton {
StringName name;
Object *ptr;
- Singleton(const StringName &p_name = StringName(), Object *p_ptr = nullptr) :
- name(p_name),
- ptr(p_ptr) {
- }
+ Singleton(const StringName &p_name = StringName(), Object *p_ptr = nullptr);
};
private: