我正在考虑关于 const 和非常量类方法的这个问题。首选答案来自 Scott Meyers 的 Effective C++,其中非常量方法是根据 const 方法实现的。
进一步扩展,如果方法返回迭代器而不是引用,如何减少代码重复?修改链接问题中的示例:
class X
{
std::vector<Z> vecZ;
public:
std::vector<Z>::iterator Z(size_t index)
{
// ...
}
std::vector<Z>::const_iterator Z(size_t index) const
{
// ...
}
};
我无法根据 const 方法实现非常量方法,因为不使用 distance()/advance() 技术就无法直接从 const_iterator 转换为迭代器。
在示例中,因为我们使用 std::vector 作为容器,实际上可以从 const_iterator 转换为迭代器,因为它们很可能被实现为指针。我不想依赖这个。有没有更通用的解决方案?