Ver Fonte

Merge pull request #43682 from RandomShaper/warn_reference_singleton

Warn about singleton being a Reference
Rémi Verschelde há 4 anos atrás
pai
commit
8cc01be213
2 ficheiros alterados com 11 adições e 4 exclusões
  1. 10 0
      core/config/engine.cpp
  2. 1 4
      core/config/engine.h

+ 10 - 0
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
+}

+ 1 - 4
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: