可能重复:
How do I remove code duplication between similar const and non-const member functions?
我的任务是实现c ++ vector analogue。我为2个案例编写了operator []。
T myvector::operator[](size_t index) const {//case 1, for indexing const vector
return this->a[index];
}
T & myvector::operator[](size_t index) {//case 2, for indexing non-const vector and assigning values to its elements
return this->a[index];
}
如您所见,代码完全相同。这个例子(只有一个代码行)不是问题,但如果我需要为const和非const情况分别实现一些运算符或方法并分别返回const或引用值,我该怎么办?每次我对其进行更改时,只需复制粘贴所有代码吗?
答案 0 :(得分:0)
这里const_cast的一些好用途。像往常一样写你的非const函数,然后像这样写你的const函数:
const T & myvector::operator[](size_t index) const {
myvector<T> * non_const = const_cast<myvector<T> *>(this);
return (*non_const)[index];
}