我在初始化这个结构时遇到了问题(例如简化)
struct S{ const float * const * const data;};
基本上我有一个由 float 组成的缓冲区,我使用 const 来确保使用 S 的人不能更改此成员的任何内容(只读)。
我的问题是这很复杂且难以初始化,我想使用返回 const S 的 lambda,因此我可以通过编写成员名称来初始化我的 lambda 中的成员:s。 data = ptr;
现在这段代码很复杂,我想知道有什么更好的解决方案。
AFAIK,拥有 struct S{float ** data;}
const S
不会有效地保护成员的内容,我无法修改 S::data
,但我可以修改 *S::data
。
我该怎么办?
谢谢
最佳答案
为什么不直接删除最后一个 const
?
struct S{ const float * const * data;};
这样您就可以随心所欲地初始化数据
,并且它仍然不能用于修改它指向的任何内容。
data
本身可以修改,但如果要防止修改,它应该只是 private
。
关于c++ - const * const * 成员变量初始化c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680754/