gpt4 book ai didi

c++ - 我可以判断一个 std::type_info 对象是否等于另一个对象或从另一个对象派生的类吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:57 24 4
gpt4 key购买 nike

我有一个工厂,里面有专门从事不相关事物的商店。一些商店工作或个人汽车和从那里派生的类别(汽车、SUV、轻便摩托车)和其他人在军用车辆和从那里派生的类别(坦克、飞机、潜艇)工作。

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

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

因此,在更多 C++ 编码细节中,我认为我的工厂可以有一个 std::map<shop *, const std::type_info *>容器在哪里std::type_info *由商店提供,并指向车辆的基类(例如,私有(private)汽车或军用车辆)。但是...,我还没有找到一种方法来检查是否有 std::type_info对于一个对象与从该候选对象派生的候选对象相同

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

有什么想法吗?

最佳答案

为什么不让商店说出他们是谁?创建一个每个商店都必须实现的接口(interface),使用基于规则的方法,例如

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

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

关于c++ - 我可以判断一个 std::type_info 对象是否等于另一个对象或从另一个对象派生的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com