c++ - const * const * 成员变量初始化c++

标签 c++ c++11

我在初始化这个结构时遇到了问题(例如简化)

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/

相关文章:

c++ - SDL2 主游戏循环

c++ - c++ lambda表达式中的非法捕获

c++ - 什么时候使用新运算符?

c++ - std::shared_ptr::owner_before 和 std::owner_less: "owner-based order"到底是什么意思?

c++ - 如何在C++中使用关键字delete删除特定的模板特化

c++ - C++ 中的一个特殊的 Person 类

c++ - 复制构造函数、深拷贝以及如何正确编写

带有自动工具的 CDT 中的 C++11

c++ - 引用的统一初始化

c++ - valgrind 是否在 Debian Wheezy 上捕捉 Qt 4.8 在极简主义应用程序中泄漏内存?