2

可能的重复:
如何删除相似的 const 和非常量成员函数之间的代码重复?

我的任务是实现 C++ 矢量模拟。我已经为 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 和 non-const 情况实现一些运算符或方法并分别返回 const 或引用值,我该怎么办?每次我进行更改时只需复制粘贴所有代码?

4

1 回答 1

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];
} 
于 2011-04-20T19:06:53.507 回答