c++ can one turn a string value into a type? -
i trying write generic code:
int _pid = _plant->getplantinternalid(); std::string _plantname = getplantbaseduponinternalid(_pid); _plantname returns string of plant, broccoli
but there way this:
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); } notice putting in _plantname need like:
std::shared_ptr<broccoli> sder2 = std::dynamic_pointer_cast<broccoli>(sbas); what needing called , how accomplish it?
update: getting id based upon internal id made up:
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>... } }
this not c++ way solve problem. instead, give plant appropriate abstract interface , don't need know concrete type you're working with. instead use interface , let virtual dispatch decide plant , implementation call.
Comments
Post a Comment