我遇到了一个错误,正如主题所说:assignment of data-member ‘RootBoxT<CORE::DoubleWrapper>::innerBox_’ in read-only structure
.我“可能”知道为什么会这样,但我需要更多地了解规则。
我为 RootBoxT
创建了所有实例作为const
, 和成员变量 *innerBox_
类RootBoxT
也是const
类型。在 RootBoxT
类的方法之一中, 我需要更新 *innerBox_
,所以我调用delete
释放 innerBox_
的内存并为其分配另一个 const 指针。
我的问题是:
- 这是正确的方法吗,当我需要更新一个 const 指针的值时,我只是删除它并为它分配另一个 const 指针?
- 此错误是由于
RootBoxT
的实例引起的吗?是const
但是其中一种方法改变了成员变量指向的位置?如果不是,为什么会发生?如果是这样,我是否应该将这些实例更改为非常量?
我真的搞砸了const
我当前项目的关键字,因为我是 C++ 的新手。谢谢。
最佳答案
如果你有这样的事情:
struct S
{
int * i;
};
和一个 const S
对象 (s
),指针 s.i
是 const
但不是 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/