我正在尝试编写一些通用代码:
int _pID = _plant->getPlantInternalID();
std::string _plantName = getPlantBasedUponInternalID(_pID);
_plantName
返回植物的字符串,例如Broccoli
但是有没有办法做这样的事情:
for (int f=0; f < _f.getPlants().size(); f++)
{
std::shared_ptr<Plant> sbas = _f.getPlants().at(f);
std::shared_ptr<_plantName> sder2 = std::dynamic_pointer_cast<_plantName>(sbas);
}
注意我正在投入,_plantName
但我真的需要做一些类似的事情:
std::shared_ptr<Broccoli> sder2 = std::dynamic_pointer_cast<Broccoli>(sbas);
什么需要做这样的事情,我该如何完成它?
更新:我只是根据我制作的内部 ID 获取 ID:
std::string HUDForStatus::getPlantBasedUponInternalID(int _id)
{
switch (_id)
{
case 114: // Asparagus
return ASPARAGUS::plantName.c_str();
break;
case 113: // Beets
return BEETS::plantName.c_str();
break;
case 115: // Bok Choy
return BOKCHOY::plantName.c_str();
break;
case 107: // Broccoli
return BROCCOLI::plantName.c_str();
break;
case 101: // Carrot
return CARROT::plantName.c_str();
break;
case 110: // Celery
return CELERY::plantName.c_str();
break;
case 103: // Corn
return CORN::plantName.c_str();
break;
case 116: // Eggplant
return EGGPLANT::plantName.c_str();
break;
case 102: // Green Beans
return GREENBEANS::plantName.c_str();
break;
... <snip>...
}
}