c++ - 错误 : assignment of data-member ‘RootBoxT<CORE::DoubleWrapper>::innerBox_’ in read-only structure

标签 c++ constants structure readonly

我遇到了一个错误,正如主题所说:assignment of data-member ‘RootBoxT<CORE::DoubleWrapper>::innerBox_’ in read-only structure .我“可能”知道为什么会这样,但我需要更多地了解规则。

我为 RootBoxT 创建了所有实例作为const , 和成员变量 *innerBox_RootBoxT也是const类型。在 RootBoxT 类的方法之一中, 我需要更新 *innerBox_ ,所以我调用delete释放 innerBox_ 的内存并为其分配另一个 const 指针。

我的问题是:

  1. 这是正确的方法吗,当我需要更新一个 const 指针的值时,我只是删除它并为它分配另一个 const 指针?
  2. 此错误是由于 RootBoxT 的实例引起的吗?是const但是其中一种方法改变了成员变量指向的位置?如果不是,为什么会发生?如果是这样,我是否应该将这些实例更改为非常量?

我真的搞砸了const我当前项目的关键字,因为我是 C++ 的新手。谢谢。

最佳答案

如果你有这样的事情:

struct S
{
   int * i;
};

和一个 const S 对象 (s),指针 s.iconst 但不是 int 它指向 (*s.i)。这意味着你可以写:

*s.i = 4;
delete s.i;

但不是:

s.i = new int (5);   // illegal
int * j = 0;
s.i = j;             // illegal

因为那会修改指针的值,而不是它指向的值。

关于c++ - 错误 : assignment of data-member ‘RootBoxT<CORE::DoubleWrapper>::innerBox_’ in read-only structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312554/

相关文章:

c - 使用 fread/fwrite 在 C 中的文件中读写结构

c++ - 捕获对象的内部范围以供在函数中使用

c++ - 我如何找出我的 C++ 程序使用的 DLL?

c++ - 删除指向二维数组的指针

c++ - 什么是constexpr?

c++ - 恒定值变化

c++ - 在 C 中允许重复的 const 限定符但在 C++ 中不允许?

c++ - 在不删除 CodedOutputStream、ZeroCopyOutputStream 的情况下发送 varint

ios - 查找来自特定类型的对象的父级

c - 给出段错误的位字段