如何解决将另一个子类的对象分配给指向的地址[C ++]
我正在一个有几个子类(Profile1,Profile2,Profile3)的项目中工作。功能之一是编辑配置文件,包括将类型从Profile1更改为Profile2。我的第一个想法是简单地删除以前的对象并创建一个新对象,但是这需要对代码进行一些其他更改,因此我决定尝试找到一种方法,使我可以保留指向该对象的指针但更改值。
这是我的代码的极其简化的示例:
Parent * currentProfile= new Child1();
Child2* newProfile = new Child2();
*currentProfile = *newProfile;
当我创建与当前类型相同的新对象时,它可以完美工作,但是当我尝试分配不同类型的对象时,它将其转换为当前类型(在示例代码中,currentProfile的对象值上方)指向将更改为newProfile的值,但是类将保留Child1而不是Child2)。
是否有一种简单的方法来保留地址但更改子对象的类型?如果不是,除了删除以前的对象并创建新对象之外,还有更好的方法吗?
谢谢
解决方法
正如我在评论中所说,您不能更改对象类型,但要保留相同的地址。不同的对象类型需要不同的内存量
如果Child1
和Child2
来自同一父级,则可以保留相同的指针,但是它将拥有不同的地址。
Parent * currentProfile= new Child1();
Child2* newProfile = new Child2();
currentProfile = newProfile;
currentProfile
现在指向地址Child2
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。