【发布时间】:2021-01-07 10:54:15
【问题描述】:
我正在从事一个项目,其中有几个子类(Profile1、Profile2、Profile3)。其中一项功能是编辑配置文件,其中包括将类型从 Profile1 更改为 Profile2。我的第一个想法是简单地删除以前的对象并创建新对象,但这需要对代码进行一些额外的更改,因此我决定尝试找到一种方法,可以保留指向该对象的指针但更改值。
这是我的代码的极其简化的示例:
Parent * currentProfile= new Child1();
Child2* newProfile = new Child2();
*currentProfile = *newProfile;
当我创建与当前对象相同类型的新对象时,它可以完美运行,但是当我尝试分配不同类型的对象时,它会将其转换为当前类型(在上面的示例代码中 currentProfile 对象的值is 指向将更改为 newProfile 的值,但类将保持为 Child1 而不是 Child2)。
有没有一种简单的方法来保持地址但改变子对象的类型?如果没有,除了删除以前的对象并创建新对象之外,还有更好的方法吗?
谢谢
【问题讨论】:
-
您不能更改对象类型但保持相同的地址。不同的对象类型需要不同的内存量。
-
是的,我明白了,谢谢。认为它可以以某种方式工作,因为它是同一个父类,并且我在创建指针时总是使用父类