You need to first change your list so that Cell t becomes Cell* t. This is so you don't get object slicing but polymorphic behavior. You also must make sure that Cell has a virtual functions. You should beable to do this with dynamic_cast but you might want to consider puting the functionality in the base class.

Code:
if (jux = dynamic_cast<Juxta*>(t))   
{
         // Juxta derived from Cell
}
else if (Morphogen* morpho = dynamic_cast<Morphogen*>(t))
{
         // Morphogen derived from Cell
}