-
-
Notifications
You must be signed in to change notification settings - Fork 580
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix create instance func #1431
Fix create instance func #1431
Conversation
Thanks! The goal here sounds great: cause a compilation error if trying to register an abstract class with However, I think the implementation here will be confusing for developers (the error they get when using the wrong macros doesn't point to the solution) and for maintainers (my brain has trouble with the What if we added another Something like:
|
db24b25
to
d5a6c88
Compare
Thank you for your suggestion, it's very useful! I had change last commit. |
Thanks! Two additional notes:
|
d5a6c88
to
1fa7a9c
Compare
@@ -203,6 +203,7 @@ class ClassDB { | |||
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(!std::is_abstract_v<T> || is_abstract, "Class is abstract, please use GDREGISTER_ABSTRACT_CLASS."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- if this class is real a no-abstract class, not check, so it can register by
GDREGISTER_CLASS
GDREGISTER_VIRTUAL_CLASS
GDREGISTER_ABSTRACT_CLASS
GDREGISTER_INTERNAL_CLASS
GDREGISTER_RUNTIME_CLASS
etc.. (all register methods) - and if this class is real an abstract class, check
is_abstract
param, make this class must register byGDREGISTER_ABSTRACT_CLASS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this looks great to me now!
Congrats on your first merged Godot contribution 🎉 |
Thanks🌹 |
Cherry-picked for 4.2 in PR #1465 |
Cherry-picked for 4.1 in PR #1466 |
To Fix #1425
This PR is a resubmission of #1427 , as the repository submitted that time was my master branch it looked bad. So I want to resubmit it.