【发布时间】:2014-03-26 19:57:54
【问题描述】:
有没有办法用基类指针确定子类的类型?
我已经在这样的类构造函数中声明了一个指针 在 .h 文件中
baseclass *screen;
在构造函数中
screen = new childclass();
假设基类有 5 个不同的子类,在我的程序中,我将指针切换为指向各种子对象,如何确定屏幕当前指向的对象的类型?
【问题讨论】:
-
在 C++ 中,变量有类型,而值没有,所以任何实现你想要的方式都是肮脏的,而你想要实现它的事实揭示了一些类层次结构设计问题。
-
你为什么要这样做,而不是依靠多态性来完成“与底层类型相应的行为”?
-
也许这是一个糟糕的设计,但它适用于具有不同屏幕的小游戏,每个屏幕都是基本屏幕类的子类,在我的“游戏”类中,我有一个名为 activescreen 的屏幕对象,我指出根据我要绘制的游戏的不同部分,分配给不同的子对象。
-
“也许是糟糕的设计……” - 不,它是糟糕的设计。当基类必须明确知道派生自它的类时,设计中就有缺陷。
标签: c++