我有以下这么简单的结构类:
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
的数据也是安全的吗?
答案 0 :(得分:3)
一些解决方案:
export DOCKER_HOST=tcp://localhost:4243
(或std::vector<uchar> data
等)。它只允许在std::array
上调用const
方法,因此它会按预期工作。data
并将getData()
设为私有。对const对象(data
)getData
醇>
答案 1 :(得分:1)
uchar* mutable data;
// ^^^^^^^
现在,即使在data
上下文中访问其父对象,也可以修改const
。
小心这一点。这可能令人困惑。