为什么在父类中寄放子类的指针

为什么在父类中存放子类的指针
今天看一个代码实现,发现这样一个设计就是在父类中存放了几个其派生的子类的指针,不是很明白这样做的用意。
想问下大家,是不是有某种设计模式里需要这样做?
------解决思路----------------------
父类中直接写死了子类的指针类型?没见过这种设计
------解决思路----------------------
父类需要指定子类的设计模式应该没有,什么样的代码贴出来拜读一下
------解决思路----------------------
如果真有,我可以任性的认为这本身就是一种及其糟糕的设计么?为什么在父类中寄放子类的指针
------解决思路----------------------
可以负责任地告诉你:没有任何设计模式需要这样做。
------解决思路----------------------
父类中包含子类的指针似乎是一种很任性的设计啊。
很乱伦的感觉。
------解决思路----------------------
看了你网盘的文件,确实是一个糟糕的设计。
他想所以设备都从smart继承,但是可能操作ata和scsi不一样,所以他想显式在运行时得到类别,同时他还担心编译器转换有缺陷,所以里面记录了自己来完成转型。
------解决思路----------------------
可能因为某 种 目 的,需要这么个东西。
比如,作者虽然把代 码 开 源了,但不希望别人看懂,加点东西混 淆 视 听
------解决思路----------------------
代 码 开 源也是非法词汇?
------解决思路----------------------
private:
  ata_device * m_ata_ptr;

这压根就不想被继承类使用

很少见...
------解决思路----------------------
这种情况不多吧,谁没事把this指针保存下来啊,直接拿来用就行了啊
------解决思路----------------------
你记住,设计模式的核心原则,就是用复杂的结构,以达到减轻修改代码的目的

如何把结构复杂化呢?
就是向下扩展,不断派生子类

永远不需要、也不可能需要向下派生后还要让基类包含子类的结构

不过呢,一个大一点的东西难免有疏漏,可能他已经把框架做好了,突然又要增加个功能,他就偷懒这样做了也说不定

总之,基类里has a子类的指针绝对是愚蠢的