说我有一个看起来像这样的类(这只是一个例子):
class A {
double *ptr;
public:
A() : ptr( new double[100] ) {}
A( const A &other ) {
other.ptr[7] = 15;
}
void doNotChangeMyData() const {
ptr[43] = 14;
}
void changeMyData() {
ptr[43] = 14;
}
~A() { delete[] ptr; }
};
该const
在拷贝构造函数和两个doNotChangeMyData
功能让这个ptr
不能改变的; 但是,这仍然允许我修改指向的数组的内容ptr
。
有没有一种方法可以防止仅ptr
在const
实例中更改数组的内容,而不能“小心”(或远离原始指针)?
我知道我可以做类似的事情
void doNotChangeMyData() const {
const double *const ptr = this->ptr;
ptr[43] = 14; // then this would fail to compile
}
但是我宁愿不必...
std::vector::operator[]()
可以修改值吗?
@ formerlyknownas_463035818编辑过的问题,所以不是一个选项;)它是一个理论上的问题,但是可以
—
ChrisMM '19
vector
。
@marvinIsSacul当然可以,但
—
idclev 463035818 '19
std::vector::operator[]() const
返回const
参考
@ChrisMM我所期望的,只是想提一下房间里的大象:)
—
idclev 463035818
std::vector