Boost logo

Boost :

From: Chris Just (cpjust_at_[hidden])
Date: 2005-03-01 12:31:21

Jody Hagins wrote:
>> I've been looking through the boost library and I haven't been able to
>> find anything that works like typeid() that returns the exact (i.e.
>> derived) class name instead of just the base class.
>> I want to compare two derived classes to make sure that they are of
>> the same class, but typeid() only returns the name of the base class.
>> If there is a boost function that does this, or if someone has a way
>> of doing it could you please point me in the right direction?
> Funny about timing...
> I think I can answer your question, but I must answer with another
> question. What do you mean by "typeid() only returns the name of the
> base class?" This is surely not the case for polymorphic types, at
> least according to the standard. Maybe if you post a bit of code, which
> represents what you are trying to accomplish, I can help...

I'm using MS Visual C++ 6.0. This is what I'm doing:

CBase { ... };
CDerived : public CBase { ... };

   CSomething( const CBase& base ) : m_Base( base ) {}

   CSomething& operator=( const CSomething& rhs )
      if ( typeid( m_Base ) != typeid( rhs.m_Base ) ) // This never fails.
         throw exception();

   CBase& m_Base;

When I look at the type_info object's name(), it always returns "CBase", even if it's actually a
CDerived object.

Do you Yahoo!?
Yahoo! Mail - now with 250MB free storage. Learn more.

Boost list run by bdawes at, gregod at, cpdaniel at, john at