- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个数据备份拷贝,我想保护它,所以我将它设为 const
。我需要在两次情况下违反 const
ness,一次是将原始数据存储到其中:
fgBlocks.CopyInto((BlkArray&)backUpCopy);
w.r.t.
result CopyInto(BlkArray &replica) const {/**/}
当我再次调用 RemoveAll()
时,这是一个非常量方法:
((BlkArray)backUpCopy).RemoveAll(true);
第一个转换(如上所示,(BlkArray&)
)是否正确?这是我之前没有使用过的间接的一个方面。然后,我将再次添加另一个未使用的方面,即放弃用于调用对象方法的 const
ness,如上所示,编译器不接受它。
成员声明如下:
BlkArray fgBlocks;
const BlkArray backUpCopy;
我正在尝试扩展 Correa 的解决方案,因此:
BlkArray *pBUCopy = (BlkArray *)&backUpCopy;
fgBlocks.CopyInto(*pBUCopy);
现在唯一的问题是编译器由于以下原因而失败
uninitialized member 'MyClass::backUpCopy' with 'const' type 'const BlockArray'
最佳答案
请注意,如果您这样做并且对象确实是const
,那么在丢弃const
之后修改它是未定义的行为。
fgBlocks.CopyInto(const_cast<BlkArray&>(backUpCopy));
另一个也是一样:
const_cast<BlkArray&>(backUpCopy).RemoveAll(true);
关于c++ - 当函数引用对象(并访问非 const 方法)时,您如何抛弃 const'ness?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474741/
我创建了一个 JSONOBject JSONObject features = new JSONObject(); 我想将其存储在 txt 文件中。我正在使用 Jettison LIbrary 来处理
前言 我初次尝试编程使用的语言是php,并且在数个使用php作为主要开发语言的公司工作过。但是,我并不会对其他语言视而不见,并且现如今php已经不是我主要的开发语言了。 我认为我是一个可以因为“
CMake 是一个跨平台的编译、测试和打包软件,即使你以前从来没有使用过构建系统,也可以轻松上手。 在我以前的文章 Autotools 入门 一文中,我说明了如何使用 Au
Powershell 从 Windows7 时代开始内置于 Windows 系统当中,可以看作是微软对 cmd 的大升级,目前两者并存于 Windows 系统中。 首先强烈推荐一个 powersh
最近我决定深入研究 C++ 标准并检查某些代码片段是否定义明确以及在标准中的何处可以找到这些定义。由于标准很难正确(特别是如果您不习惯),我想验证我的假设是否正确。 我遇到了以下示例(这显然是个坏主意
这个问题在这里已经有了答案: Does removing const from a pointer-to-const obey strict aliasing in C, and refer to
我是一名优秀的程序员,十分优秀!