У меня есть Фабрика, в которой есть магазины, которые работают над несвязанными вещами.Некоторые магазины работают или на личных автомобилях и классах, полученных оттуда (автомобили, внедорожники, мопеды), а другие работают на военных транспортных средствах и классах, полученных оттуда (танки, самолеты, подводные лодки).
Этот вопрос относится к моему классу Factory, который не заботится о том, что делается в магазинах, но предоставляет некоторые услуги, чтобы убедиться, что правильные типы транспортных средств направляются в нужные магазины.то есть, если Audi A4 обнаруживается в погрузочном доке, он должен быть идентифицирован как личный авто и направлен в личный автомагазин.
Могу ли я сделать это без объявления типов транспортных средств, возможных на заводе-изготовителеclass?
Итак, в более специфических особенностях кодирования на C ++ я подумал, что на моей фабрике может быть контейнер std::map<shop *, const std::type_info *>
, где магазины предоставили std::type_info *
, и указывает на базовый класс транспортного средства (например,личный авто или военный автомобиль).Но ... я не смог найти способ проверить, совпадает ли один std::type_info
для объекта с кандидатом ИЛИ , полученным из этого кандидата.
ЕслиФабрика знала, по крайней мере, о базовых типах транспортных средств (личный автомобиль и военный автомобиль), я знаю, как использовать dynamic_cast<>()
, действующий на личные авто указатели или указатели военных транспортных средств, для проверки на равенство типов или тот, который получен из базы,Тем не менее, я надеюсь сделать фабрику как можно более общей.
Есть идеи?