Cześć forumowicze!
Już nie jeden raz pomogliście mi uporać się z programistycznymi problemami i tym razem również liczę na Waszą pomoc.
Posiadam w swoim programie następujące klasy:
accessories
enemies : accessories
chicken : enemies
box : accessories
chest : accessories
Posiadam również taką funkcję:
shared_ptr<accessories> map_level::objectsFactory(int type)
{
shared_ptr<accessories> temp = nullptr;
switch (TexNames(type))
{
case CHICKEN:
temp = make_shared<accessories>(chicken());
break;
case CHEST:
temp = make_shared<accessories>(chest());
break;
case COIN:
temp = make_shared<accessories>(coin());
break;
}
return temp;
}
Posiadam również 2 vectory:
vector <shared_ptr <accessories>> objectsVector;
vector <shared_ptr <enemies>> enemiesVector;
W zależności od obiektu, który zwraca objectsFactory() chciałbym umieścić dany obiekt do odpowiedniego wektora.
Próbowałem to zrobić tak:
shared_ptr<accessories> temp = objectFactory(type);
// rzutowanie w dół
shared_ptr<enemies> isEnemie = dynamic_pointer_cast<enemies, accessories>(temp);
if (isEnemie)
{
enemiesVector.push_back(isEnemie);
else
{
objectsVector.push_back(temp);
}
Problem w tym, że dla obiektu który jest chicken powyższe rzutowanie zwraca wskaźnik isEnemie jako stan empty, a więc wszystko wrzuca mi do tego drugiego wektora.
Będę wdzięczny za każdą pomoc i wskazówkę.