I have some class, like
class object {
public:
virtual std::string name() const;
};
It provides some interface, and I want all derivated to override method name.
Problem is, it is not overriden, nothing breaks at compile time, but I get problems in run-time.
Is it any way to enforce method overriding?
EDIT: I want to enforce overriding in all derivates, not just direct descedants!
You can check whether a member is defined in a base class by checking its pointer-to-member type:
This does mean that at compile time you must have access to all the descendant types that you’re interested in.