【发布时间】:2011-11-12 08:37:58
【问题描述】:
有没有捷径可以将基类转换为程序内部的派生类之一?例如:
假设我有三个类,一个基类和两个派生类:
class cColor {
};
class cBlue : public cColor {
};
class cRed : public cColor {
};
然后我在我的程序中创建一个 Color 类:
int main(){
cColor unsaturated
return 0;
}
有没有办法将unsaturated 从 cColor 类转换为 cBlue 或 cRed 类?类似的解决方案是将unsaturated 存储在指针中,从指针创建新的cBlue 或cRed 类,然后删除unsaturated?
【问题讨论】:
-
你心目中的“转型”是什么意思?答案是“不”,但我完全相信你没有以正确的方式思考你的问题,而且你实际上不会想要任何这样的事情。
-
@Kerrek SB 好吧,我想在我的程序中实现一个基础对象,但让它能够根据用户输入动态更改。使用简单的类确实没有什么区别,但我相信在处理广泛和/或详细的类时会成为一个问题
-
在 C++ 中不可能有这样的事情。一个对象活着,然后它就死了。它始终是一种固定类型。没有“变异类型”这样的东西。但是,这不是必需的:通常您首先确定您想要什么样的对象,然后创建正确的对象。在构造对象之前,您可以拥有一个保存相关信息的中间调度程序项,但无需“覆盖”现有对象。
-
@KerrekSB 感谢您的帮助,我可以想出不同的方法来实现我所要求的,但真正的问题是是否有预定义的、更简单的处理方法。显然,每个人都告诉我,改变一个对象可能是灾难性的或危险的,所以这就回答了我的问题。感谢您尝试深入研究:P
标签: c++ class inheritance