浏览代码

Merge pull request #43682 from RandomShaper/warn_reference_singleton

Warn about singleton being a Reference
Rémi Verschelde 4 年之前
父节点
当前提交
8cc01be213
共有 2 个文件被更改,包括 11 次插入4 次删除
  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: