我无法弄清楚如何返回对vector元素的引用。 []和at()返回引用,没有?
但是当我尝试以下内容时,它将无法编译。
我正在使用Visual C ++,它使无法从'const float'转换为'float& 错误。
T& GetElement(size_t x) const {
return _vector.at(x);
}
GetElement是一个方法,_vector是一个成员变量。
答案 0 :(得分:7)
这不会编译,因为您试图返回对向量元素的非常量引用,该元素本身是const
。
向量为const
的原因是您的成员函数被声明为const
:
T& GetElement(size_t x) const // <<== Here
此const
- ness标记会传播到所有成员,包括_vector
。
要解决此问题,请将const
添加到要返回的引用类型(demo)。
答案 1 :(得分:4)
您没有显示错误,但作为一种猜测,看起来_vector
是一个成员(来自您提供的_
前缀)并且您在{{{ 1}}成员函数,因此const
将返回at
引用。所以你可能需要:
const