C++ 我能告诉你一个std::type_info对象是等于另一个还是派生自另一个的类吗?

C++ 我能告诉你一个std::type_info对象是等于另一个还是派生自另一个的类吗?,c++,polymorphism,rtti,typeid,C++,Polymorphism,Rtti,Typeid,我有一家工厂,工厂里的商店经营不相关的东西。一些商店经营或经营从那里衍生的个人汽车和职业(汽车、SUV、轻便摩托车),其他商店经营军用车辆和从那里衍生的职业(坦克、飞机、潜艇) 这个问题与我的工厂级别有关,它不关心商店正在生产什么,但它确实提供了一些服务,以确保将正确类型的车辆运送到正确的商店。i、 例如,如果一辆奥迪A4出现在装货码头,则需要将其标识为个人汽车并发送至个人汽车商店 我可以在不声明Factory类中可能的车辆类型的情况下执行此操作吗 P> >在更多的C++编码细节中,我认为我的

我有一家工厂,工厂里的商店经营不相关的东西。一些商店经营或经营从那里衍生的个人汽车和职业(汽车、SUV、轻便摩托车),其他商店经营军用车辆和从那里衍生的职业(坦克、飞机、潜艇)

这个问题与我的工厂级别有关,它不关心商店正在生产什么,但它确实提供了一些服务,以确保将正确类型的车辆运送到正确的商店。i、 例如,如果一辆奥迪A4出现在装货码头,则需要将其标识为个人汽车并发送至个人汽车商店

我可以在不声明Factory类中可能的车辆类型的情况下执行此操作吗

<> P> >在更多的C++编码细节中,我认为我的工厂可以有一个<代码> STD::MAP<代码>容器,在那里,代码> STD::Type信息> */C>由商店提供,并指向车辆的基类(例如,个人汽车或军用车辆)。 但是…,我无法找到一种方法来检查一个对象的
std::type_info
是否与一个候选对象或从该候选对象派生的相同

如果工厂至少知道基本车辆类型(个人汽车和军用车辆),我知道如何使用
dynamic_cast()
作用于个人汽车指针或军用车辆指针,以检查类型是否相等或是否从基本车辆派生。然而,我希望使工厂尽可能通用


有什么想法吗?

为什么不让商店告诉他们是谁? 创建一个每个商店都必须实现的界面,使用基于规则的方法,如

virtual bool CanBeShipped() const = 0;
virtual bool IsMilitary() const = 0;

这样工厂就只知道需要执行的规则。

为什么不让商店告诉他们是谁? 创建一个每个商店都必须实现的界面,使用基于规则的方法,如

virtual bool CanBeShipped() const = 0;
virtual bool IsMilitary() const = 0;

因此,工厂只知道需要实现的规则。

此时,我认为我想要的std::type_info对象上的操作类型是不可能的

我认为下一个最好的选择是把识别责任推到商店身上。 商店保存着一张特定产品及其类型标识表。e、 g

std::list<const std::type_info *> productsMadeHere;

此时,我认为我想要的std::type_info对象上的操作类型是不可能的

我认为下一个最好的选择是把识别责任推到商店身上。 商店保存着一张特定产品及其类型标识表。e、 g

std::list<const std::type_info *> productsMadeHere;

这将要求每个商店以某种方式了解所有商店生产的所有不同类型的产品。i、 正如你所建议的,要求个人汽车店知道其他商店生产军用物品。这要求每个商店以某种方式了解所有商店生产的所有不同类型的物品。i、 正如你所建议的那样,要求私人汽车店知道其他商店生产军用物品。