保护类内部的动态数据

时间:2015-10-09 11:53:57

标签: c++ c++11 const

我有以下这么简单的结构类:

class bmp{
    int w;
    int h;
    uchar* data;
}

如果函数声明如下:

double do_someting(const bmp& image);

不允许修改image.himage.wimage.data的地址。但是,可以编辑image.data ..

的数据

问题: 在设计类以将对象的状态(例如const)与特定属性的状态相关联时,有没有办法。那么,image.data的数据也是安全的吗?

2 个答案:

答案 0 :(得分:3)

一些解决方案:

  1. 使用export DOCKER_HOST=tcp://localhost:4243(或std::vector<uchar> data等)。它只允许在std::array上调用const方法,因此它会按预期工作。
  2. 提供自己的data并将getData()设为私有。对const对象(data
  3. 重载getData

答案 1 :(得分:1)

uchar* mutable data;
//     ^^^^^^^

现在,即使在data上下文中访问其父对象,也可以修改const

小心这一点。这可能令人困惑。