| ▲ | Kranar 4 days ago |
| Classes in C++ have methods too. The problem is that you can't add new methods to an existing class. |
|
| ▲ | kbolino 4 days ago | parent | next [-] |
| More specifically, you cannot add new abstract (aka "pure virtual") methods to an existing class/interface/trait when that class/interface/trait is already extended/implemented by code you don't control. |
|
| ▲ | bitwize 4 days ago | parent | prev | next [-] |
| Rust lets you combine multiple traits per type. |
| |
| ▲ | Kranar 4 days ago | parent [-] | | C++ lets you inherit from multiple classes as well. I don't see how this has anything to do with being able to add new methods to existing types. | | |
| ▲ | tomjakubowski 4 days ago | parent | next [-] | | There is an important difference: in Rust you can write a new trait, with new methods, and impl that trait for a type without having to change the existing structs/enums which comprise that type at all. You can also do this (with some restrictions, "the orphan rule") for types defined in another library. In C++ classes, you have to be able to modify a class definition to extend it with new methods (or a new ancestor to multiply inherit from). | |
| ▲ | adastra22 4 days ago | parent | prev | next [-] | | You can add traits (with their methods) to existing types, without modification. | |
| ▲ | bitwize 4 days ago | parent | prev [-] | | C++ classes are types. Rust traits are applied to types. | | |
|
|
|
| ▲ | mrkeen 4 days ago | parent | prev [-] |
| So hypothetically, if you could add new methods to an existing class, it would solve the problem? |
| |