我有一份想要保护的数据的备份副本,所以我制作了它const
。我需要违反这一点const
两次,一次将原始数据存储到其中:
fgBlocks.CopyInto((BlkArray&)backUpCopy);
w.r.t.
result CopyInto(BlkArray &replica) const {/**/}
当我再次打电话时RemoveAll()
这是一个非常量方法:
((BlkArray)backUpCopy).RemoveAll(true);
是第一个演员(如上所示,(BlkArray&)
) 正确的?这是我之前从未涉及过的间接方面。然后我会再次添加另一个未使用的方面,即抛弃const
调用对象方法的能力,编译器不接受,如上所示。
成员声明如下:
BlkArray fgBlocks;
const BlkArray backUpCopy;
我正在尝试扩展 Correa 的解决方案,因此:
BlkArray *pBUCopy = (BlkArray *)&backUpCopy;
fgBlocks.CopyInto(*pBUCopy);
现在唯一的问题是编译器由于以下原因而失败
未初始化的成员“MyClass::backUpCopy”,带有“const”类型“const BlockArray”
请注意,如果您这样做并且该对象确实是const
,然后在丢弃后修改它const
ness 是未定义的行为。
fgBlocks.CopyInto(const_cast<BlkArray&>(backUpCopy));
另一个也同样如此:
const_cast<BlkArray&>(backUpCopy).RemoveAll(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)