Class++ is finally complete and out of beta! I canât really think of adding any new features, so this is going to be the last version for now.
Until I get a new idea or find an efficient method to implement certain ideas that I currently have, the only updates there will ever be are performance updates and bug fixes. (And maybe some internal changes)
Thanks for using my module!
Updated the source code to be more efficient and clean, and removed unnecessary comments from the code.
Updated certain internal functions to be more performant.
Added a new documentation page describing how to use type checking with Class++. (Itâs very useful, check it out!)
Fixed certain parts of the documentation.
Removed final functions (using the final keyword with functions), unfortunately implementing final functions required some internal changes that werenât very worth it for this feature, so I decided to remove it altogether, you can use other methods or just use final classes instead.
(The final keyword now works as it was in 1.3.1)
If you have any new feature ideas, or found bugs, please donât hesitate to create a feature request or a bug form though!
Class++ objects now support type checking! This was an update that I was planning to do for a very long time, and it would not have been possible without @HugeCoolboy2007.
All of the created objects should now have type completion for the members stored in the Public access specifier.
Creating custom types is no longer needed, however, if you still want to use the full features of type checking in Luau, itâs still recommended that you use custom types for your classes.
Quick update: Class++ should now support Wally and Rojo!
I will make some improvements over to it in the next few days, but it should work for now. Let me know if you encounter any issues!
Wally link:
Or add this to your wally.toml file: classpp = "tenebrisnoctua/classpp@1.1.2"
Also, the documentation has been updated with a new theme!
Does this API use metatables? If no at all, then this is great since metatables cannot be transferred between non-module scripts as well as between client and server
Sorry, this API uses metatables. It has to because many features including Operator Overloading and Function Overloading needs to use metatables in order to function.
Though I understand your concern about metatables not being transferred over with RemoteEvents and RemoteFunctions to the Server or the Client, there are solutions such as a constructor that takes in a data table and recreates the object on the Server or the Client.
Generally OOP itself on Luau requires the usage of metatables, without them you lose a lot of power. This API functions almost the same as the Roblox Instance API, both create userdata objects with a metatable attached to them.
I hope this answers your question! If you have more, feel free to ask!
No problem! Metatables arenât that bad actually, aside from the issue you mentioned above, the module is very well optimized! (In fact a version for the new type solver is in the works and will be released soon.)
will the syntax be changed when the new type solver is implemented?
And how does the constructor and destructor work? when you inherit a class?
does the base class calls the constructor then the derived classâs constructor? or the derived classâs constructor is only going to be called? or which ever is which.
Not at all. The new solver is going to be implemented internally for the purpose of providing a better auto-type completion system for objects. Right now, it is enough for the most part, however, I want to make it so much better, and faster.
Currently, only the derived classâs constructor is called when you create a new object. This behavior will be changed with the new update to behave more like C++'s constructors.
(Parent classâs constructor is called first, then the child class constructor will be called next.)
Iâve been trying figure out why the constructor does not work as I expected it to be, It does call the constructor on the base class before the derived class but the function does not point any references to self on the base class and only on the derived class.
I was porting some of my Classes to Class++. Unfortunately this is not going to work.
Hmm⌠that might be a bug, can you create a bug report on the GitHub so I can get it solved ASAP? Sorry about the issue by the way. (You can also post the code youâre having trouble with as well.)
Alright, turns out that was a bug and not intentional (base classâs constructor shouldnât be called).
In the next update, the base classâs constructor will be called without problems, and bugs should be fixed.
I was wondreing about this API and came up with an idea. Why wouldnât you add a function to transfer an object or class to the different side (client->server\server->client)? This would be such a great feature that will save some time and prevent people from re-inventing the wheel