I've read:
How can a C++ base class determine at runtime if a method has been overridden?
and
get the real address(or index in vTable) of virtual member function
and the answers really bug me. Suppose there's a class MyClass, with some subclasses inheriting it; and that I have a MyClass* p = get_ptr_to_a_myclass().
Now, if I am able to invoke a virtual member, i.e. write p->Method() - how can it be that I can't get the address, or the address offset, of the Method method of *p? That is just inconsistent! After all, the condition for being able to invoke a function is being able to resolve/obtain its address (and knowing its signature etc.)
Please help me resolve this conundrum.