Re: cast classes to common ancestor
* deadguysfrom@gmail.com:
Ive got two classes in the same class hierarchy, and I want to find
their common ancestor. Any idea how to do this?
class A {};
class B : public A {};
class C : public B {};
class D : public B {};
I have pointers to C and D, I want pointers to B.
See the reply by Ian Collins else-thread.
If your enquiry is of a more academic, theoretical nature:
You can check whether the classes /have/ a common ancestor by using
static_cast, possibly combined with SFINAE.
You can go the opposite way, finding a pointer to the complete object
(of the most derived class), by using dynamic_cast<void*>, provided the
pointer you have is a pointer to an object of polymorphic class. This
is sometimes useful, e.g. for hashing. But it doesn't tell you what the
most derived class is, except you can get a run-time description.
You can not enumerate the class hierarchy by means of only language and
standard library functionality.
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?