有没有捷径可以获取基类并将其转换为程序内部的派生类之一?例如:
假设我有三个类,一个基类和两个派生类:
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
吗?
最佳答案
对象创建后无法改变类型(构造和析构除外,派生类对象暂时变为基类对象)。由于派生类对象可能比它们的基类大,所以这也行不通。
创建新的派生对象、重置指针然后销毁基对象的解决方法在没有其他人持有指向基类的另一个指针的情况下有效。如果有任何其他指向原始对象的指针或引用,它将在之后悬空。但是,如果您控制着该类的唯一指针/引用(例如,如果您仅通过一个从不泄漏指针或对真实对象的引用的单例代理对象访问它),则此方法有效。
关于c++ - 将基类转换为其派生类之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101425/