我有一个内部拥有foo向量的类
class bar {
private:
vector<Foo> foos_;
}
现在,我想设计对此向量的公共访问。我正在考虑该函数的两个版本:
Foo& getFoo(int index) {
// first do size checking, return ref
return foos[index];
}
和
const Foo& getFoo(int index) const {
// first do size checking, return const reference
return foos[index];
}
这种方法有什么缺点吗?一个明显的缺点是我将几乎相同的代码复制了两次。有更好的方法吗?
-----编辑----- 第二个访问者忘记了const,已更新
答案 0 :(得分:1)
同时具有const和非const访问器在C ++中是很常见的。没有将两种代码都结合起来的语言功能-您确实需要编写两次。
顺便说一句,您不需要自己进行边界检查,可以使用foos_.at(index)
代替foos_[index]
,然后进行自动边界检查。