函数返回对向量元素的引用

时间:2013-12-20 20:24:14

标签: c++ reference stdvector

我无法弄清楚如何返回对vector元素的引用。 []和at()返回引用,没有?

但是当我尝试以下内容时,它将无法编译。

我正在使用Visual C ++,它使无法从'const float'转换为'float& 错误。

T& GetElement(size_t x) const {
    return _vector.at(x);
}

GetElement是一个方法,_vector是一个成员变量。

2 个答案:

答案 0 :(得分:7)

这不会编译,因为您试图返回对向量元素的非常量引用,该元素本身是const

向量为const的原因是您的成员函数被声明为const

T& GetElement(size_t x) const // <<== Here

const - ness标记会传播到所有成员,包括_vector

要解决此问题,请将const添加到要返回的引用类型(demo)。

答案 1 :(得分:4)

您没有显示错误,但作为一种猜测,看起来_vector是一个成员(来自您提供的_前缀)并且您在{{{ 1}}成员函数,因此const将返回at引用。所以你可能需要:

const