const-cast相关内容

对于单元测试,有没有一种更改const变量的值的黑客方法?

我有一个C++11头文件,它有一个声明为my_const_value的常量值。以及一个名为GetValue的函数,该函数使用const值运行复杂逻辑并返回期望值。 我想用my_const_value的不同值对GetValue进行单元测试。 我知道这不可取,但为了编写GetValue的单元测试,我希望使用不同的my_const_value值来测试GetValue。在C++中是否有一些类似 ..
发布时间:2022-08-26 23:14:43 C/C++开发

为什么 const 方法不能返回非常量引用?

为什么下面的方法 getRanks() 编译不出来,我该如何优雅地修复它? 我想要做的就是定义一个返回成员引用的成员访问器方法.引用不是 const 因为我以后可能会修改它所引用的内容.但是由于成员方法不修改对象,所以我将它声明为const.编译器(clang,std=c++11)然后坚持认为存在“删除限定符"的“引用绑定".但我不会放弃预选赛,是吗?如果我是,为什么: struct te ..
发布时间:2022-01-24 00:02:25 C/C++开发

我是否正确地说 const_cast 然后修改绑定到临时的 ref-to-const 可以吗?

我想检查一下我对此事的理解和结论. 在 IRC 上,有人问: const_cast 是否可以接受绑定到临时对象的 const 引用? 翻译:他有一个 ref-to-const 绑定到一个临时的,他想抛弃它的 const-ness 来修改它. 我的回答是我问过 a之前类似的问题,其中的共识似乎是临时人员本身并不是天生的const,因此您可以摆脱引用的const-ness您必须 ..
发布时间:2022-01-23 23:43:02 C/C++开发

如何在 const 函数中调用非常量函数 (C++)

我有一个看起来像这样的旧函数: int Random() 常量{返回 var_ ?4:0;} 我需要在该遗留代码中调用一个函数,使其现在看起来像这样: int Random() 常量{返回 var_ ?新呼叫(4):0;} 问题是我收到了这个错误: 在成员函数'virtual int Random() const'中:class.cc:145:错误:将 'const int' 作为 'i ..
发布时间:2022-01-23 23:42:46 C/C++开发

如何将“指针转换为指针类型"常量?

用下面的代码 void TestF(const double ** testv){;}无效调用测试(){双**测试;测试F(测试);} 我明白了: 'TestF' : 无法将参数 1 从 'double **' 转换为 'const double **' 我不明白为什么.为什么 test 不能被无声地转换为 const double**?我为什么要明确地这样做?我知道 TestF(con ..
发布时间:2022-01-23 23:24:16 C/C++开发

调用 std::set<Type*>::find 时避免 const_cast

有什么好的方法可以避免下面的 const_cast,同时保持 const 的正确性吗? 如果没有 const_cast,下面的代码将无法编译.set::find 获取对集合键类型的 const 引用,因此在我们的例子中,它保证不会更改传入的指针值;但是,它不能保证不改变指针指向的内容. C 类 {上市:std::setm_set;bool isPtrInSet(const in ..
发布时间:2022-01-17 18:52:38 C/C++开发

我说 const_cast 然后修改绑定到临时对象的 ref-to-const 是对的吗?

我想检查一下我对此事的理解和结论. 在 IRC 上,有人问: const_cast 是否可以接受绑定到临时对象的 const 引用? 翻译:他有一个 ref-to-const 绑定到一个临时对象,他想抛弃它的 const-ness 来修改它. 我的回答是我问了a之前类似的问题,其中的共识似乎是临时变量本身并不是固有的 const,因此您可以摆脱引用的 const-ness你 ..
发布时间:2022-01-05 12:04:23 C/C++开发

const_cast 安全吗?

我找不到关于 const_cast 的太多信息.我能找到的唯一信息(在 Stack Overflow 上)是: const_cast() 用于添加/删除变量的 const(ness)(或 volatile-ness). 这让我很紧张.使用 const_cast 会导致意外行为吗?如果是,那是什么? 或者,什么时候可以使用 const_cast? 解决方案 const_ca ..
发布时间:2021-12-31 21:27:17 C/C++开发

使用 const_cast 进行自动类型推导不起作用

在我的工作中,const_cast 的使用在某些情况下是不可避免的. 现在我必须const_cast一些非常复杂的类型,实际上我不想在const_cast表达式中编写所有这些类型的混乱,特别是如果杂乱很长. 我的第一个想法是编写 const_cast(myType),但我的编译器无法推导出 myType 的非常量类型.所以我想帮助我的编译器,我设计了以下方法,它可以编译. #in ..
发布时间:2021-09-19 19:14:41 C/C++开发

是否会从“ this”中删除constness?然后更改成员值会调用未定义的行为?

在回应我对另一个问题的答案的评论时有人提出类似建议 void C :: f()const { const_cast(this)-> m_x = 1 ; } 由于定义了const对象,因此调用了未定义的行为。这是真的?如果不是,请引用允许这样做的C ++标准(请提及您引用的标准)。 对于它的价值,我一直使用它避免使成员变量 mutable 只需 ..
发布时间:2020-10-08 06:38:01 C/C++开发