summaryrefslogtreecommitdiffstats
path: root/include/godot_cpp/core/class_db.hpp
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2024-04-24 14:26:06 -0500
committerDavid Snopek <dsnopek@gmail.com>2024-04-24 14:49:26 -0500
commitca46ef4d256c727a116366334b705ecda0a06c5d (patch)
treee86a7a9ae33484bb1734d9306bf16c1ebfa52aa4 /include/godot_cpp/core/class_db.hpp
parente23b117ac32fdbeb0920f234e193e6d31307c0ad (diff)
downloadredot-cpp-ca46ef4d256c727a116366334b705ecda0a06c5d.tar.gz
Give compile-time error if registering a class without its own `_bind_methods()` function
Diffstat (limited to 'include/godot_cpp/core/class_db.hpp')
-rw-r--r--include/godot_cpp/core/class_db.hpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/godot_cpp/core/class_db.hpp b/include/godot_cpp/core/class_db.hpp
index 6dedc12..98e9f72 100644
--- a/include/godot_cpp/core/class_db.hpp
+++ b/include/godot_cpp/core/class_db.hpp
@@ -203,6 +203,7 @@ public:
template <typename T, bool is_abstract>
void ClassDB::_register_class(bool p_virtual, bool p_exposed, bool p_runtime) {
static_assert(TypesAreSame<typename T::self_type, T>::value, "Class not declared properly, please use GDCLASS.");
+ static_assert(!FunctionsAreSame<T::self_type::_bind_methods, T::parent_type::_bind_methods>::value, "Class must declare 'static void _bind_methods'.");
static_assert(!std::is_abstract_v<T> || is_abstract, "Class is abstract, please use GDREGISTER_ABSTRACT_CLASS.");
instance_binding_callbacks[T::get_class_static()] = &T::_gde_binding_callbacks;