Re: How to compare object types in C++?
Bryan wrote:
Several people asked why I was doing this so Ill try to explain:
I have the following Cell class:
class Cell
{
...
CellType m_type;
}
m_type here is __always__ of type CellType. Polymorphism only works on
pointers and references. Let's assume it's a pointer:
CellType* m_type;
Where CellType is like this:
class AntigenPresentingCellType : public CellType {};
class DendriticCellType : public AntigenPresentingCellType {};
[...more cell types...]
Now I can use the type objects to determine easily if a Cell object is
of type CD4 like so:
m_type.IsKindOf(RUNTIME_CLASS(CD4CellType))
You can do this with RTTI like so:
if (dynamic_cast<CD4CellType*>(m_type)) != NULL)
{
// m_type points to a CD4CellType or derived type.
}
So now I want to see if I have two cells if cell1.m_type ==
cell2.m_type. I was thinking that I just need to know if cell1.m_type
is an object of the same class as cell2.type.
With RTTI:
if (typeid(*cell1.m_type) == typeid(*cell2.m_type))
{ /* same type */ }
If your type objects are singletons (there is only one object of each type
class and m_type only points to one of this objects), you could compare the
pointers to see if the cells have the same CellType.
--
Thomas
http://www.netmeister.org/news/learn2quote.html