How we could cast an Array of base class pointer to an array of derived class pointer. The following code show an simple example of what i'am trying to do :
class CBaseClass
{
public :
int CommonValue;
};
class CFirstItem : public CBaseClass
{
public :
int firtValue;
};
class CSecondItem : public CBaseClass
{
public :
int secondValue;
};
class CThirdItem : public CBaseClass
{
public :
int thirdValue;
};
class Manager
{
public :
Manager()
{
for (unsigned int index = 0; index < 5; ++index)
{
m_firstItem[index] = new CFirstItem();
}
for (unsigned int index = 0; index < 10; ++index)
{
m_secondItem[index] = new CSecondItem();
}
for (unsigned int index = 0; index < 12; ++index)
{
m_thirdItem[index] = new CThirdItem();
}
}
private :
CBaseClass* m_firstItem[5];
CBaseClass* m_secondItem[10];
CBaseClass* m_thirdItem[12];
};
My main question here is how could i cast from CBaseClass to an CFirstClass or CSecondClass, i tried
CFirstClass* wFirstClass = static_cast<wFirstClass*>(m_firstItem);
And that doesn't seems to work, there is any way to how this cast should be made ?
virtual ~CBaseClass() = default;. Also - read aboutstatic_castanddynamic_cast