Const保护类中的动态数据
Const guard for the dynamic data inside class
我有一个类与以下这么简单的结构体:
class bmp{
int w;
int h;
uchar* data;
}
如果函数声明如下:
double do_someting(const bmp& image);
不允许编辑image.h
或image.w
或image.data
的地址。但是,可以编辑image.data
的数据..
问题是:当设计一个类时,是否有一种方法将对象的状态(例如const
)与特定属性的状态联系起来?那么,image.data
的数据也会安全吗?
几个解决方案:
- 使用
std::vector<uchar> data
(或std::array
等)。它将允许在data
上只调用const
方法,因此它将按预期工作。 - 提供自己的
getData()
,将data
设为私有。重载getData
为const对象(uchar* getData(); const uchar* getData() const;
)
uchar* mutable data;
// ^^^^^^^
现在,data
可以被修改,即使它的父对象在const
上下文中被访问。
小心这个。
相关文章:
- 带有 std::map 的 c++ 结构是拥有动态数据对象的好设计吗?
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- Lab 3.10.2动态数据——如何获取和消除
- 视觉对象C++创建动态数据断点
- C++中游戏的动态数据处理
- 如何使用 apache avro GenericRecord 用于动态数据
- 处理动态数据结构时代码中的神秘错误
- 如何使用 c++ 和 QT 显示包含动态数据的网页
- 如何创建返回类型为 1) 真/假和 2) 动态数据的对象
- C++动态数据结构
- 类 COpenGLControl 的两个实例之间的动态数据交换
- 如何将应用于所有顶点的动态数据传递给顶点着色器
- 无需删除动态数据
- 动态数据结构(如链表)的意义是什么?
- Const保护类中的动态数据
- 如何使用std::vector等动态数据结构并防止分页
- c++中的动态数据类型转换
- 如果每个变量和类对象都是在编译时确定的,那么如何处理来自游戏的动态数据呢?
- 带有持久位置的c++动态数据类型
- c++中最快的动态数据结构