【问题标题】:How to know what type of object is pointing a base class pointer?如何知道什么类型的对象指向基类指针?
【发布时间】:2012-03-27 14:47:25
【问题描述】:

我有一个名为 Cell 的基类(其他类有一个指向此类对象的指针),以及 3 个派生类 CellA、CellB 和 CellC。当一个单元格死亡时,指针指向单元格,在其他情况下是活着的(A、B 或 C)。怎么知道是什么在这个时刻指向那个指针来行动??

【问题讨论】:

  • 有一个虚拟的IsAlive 方法。
  • 谁是你叙述中的“指针”?

标签: c++ object pointers


【解决方案1】:

也许你需要一点不同的逻辑,看看状态设计模式,我认为它可以帮助你。通常铸造是一件坏事,应该避免。如果您需要铸件,那么您可能遇到了设计问题....

祝你好运

【讨论】:

  • 谢谢,但设计是我的老师 xDDD 创造的迷你地狱
【解决方案2】:

如果您的类是多态的,您可以使用 dynamic_cast
dynamic_cast 允许您安全地向下转换指针。
在您的情况下,您可以使用dynamic_cast 检查基类指针是否指向派生实例,dynamic_cast 可以向您报告该信息。

【讨论】:

    【解决方案3】:

    使用dynamic_casetypeid() 在运行时了解对象...

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 2021-07-02
      • 2023-02-09
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2017-06-17
      相关资源
      最近更新 更多