我的C++数组中有一个重载的[]运算符。我对他们有二:C++动态数组只有getter与超载的[]运算符一起工作
ElType operator[](int position) const; //getter
ElType & operator[](int position); //setter
然而,我发现,如果我的例子做:
std::cout << dynamicArray[4];
它只使用了二传手,基本上只是忽略了吸气。有没有办法让它使用getter?问题是,我的Getter有代码来确保每次分配一个值时,名为“size”的变量都会改变。但我不希望这会在我只获取价值而不改变它时触发。
需要getter的代码是:
ElType DynArray::operator[](int position) const{
std::cout << "using getter" << std::endl;
return buffer_[position];
我已经尝试了很多事情,在这一点上,像坚持一个&进入吸气,但也不能工作。如果这个问题很重要的话,代码中的getter也在setter上方。另外,当构造容量为5的动态数组时,将所有元素保持原样(基本上是随机值)还是应该循环将它们全部设置为null /零是一个好习惯?
不意味着我必须做一个const对象每次我想要使用getter,因为setter不会使用它? –
你可以试试[''''const_cast'''](http://en.cppreference.com/w/cpp/language/const_cast)该对象。 – mepcotterell