summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-11-19 13:37:45 +0100
committerGitHub <noreply@github.com>2020-11-19 13:37:45 +0100
commit8cc01be213ebe16212de8452d5235e1bf7c36f7c (patch)
tree08d02fff9c7a617c601c5c720c144c74ece0e1fe
parentb115ea4c28f16a2d894c126f573599508fb2683d (diff)
parente1150bd912bd6076b8a94544c0ec32f75344976e (diff)
Merge pull request #43682 from RandomShaper/warn_reference_singleton
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: