【发布时间】:2012-11-27 10:38:06
【问题描述】:
可能重复:
How do I remove code duplication between similar const and non-const member functions?
在下面的例子中:
template<typename Type, unsigned int Size>
class MyClass
{
public: inline Type& operator[](const unsigned int i)
{return _data[i];}
public: inline const Type& operator[](const unsigned int i) const
{return _data[i];}
protected: Type _data[Size];
};
const 和 non-const operator[] 是独立实现的。
在设计方面是不是更好:
- 1) 像这里这样的两个独立实现
- 2) 两个函数之一调用另一个函数
如果解决方案 2) 更好,给定示例的代码是什么?
【问题讨论】:
-
在 Effective C++ 第三版(第 3 项)中实际上提到了可以在非 const 版本中执行此操作:
return const_cast<Type&>(static_cast<const MyClass&>(*this)[i]);我认为如果您有其他东西而不是仅仅不过,每行只有一行。 -
@chris 我确实希望您必须查找版本和项目编号。否则有点担心.. :)
-
@Troy,确实,我只记得在其中一本书中读过类似的内容。
标签: c++ c++11 constants subscript-operator