Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

function returning reference to a vector element

I cannot figure out how to return a reference to a vector element. The [] and at() are returning reference, no?

But when I try the following, it won't compile.

I'm using Visual C++ and it gives cannot convert from 'const float' to 'float & error.

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

GetElement is a method, and _vector is a member variable.

like image 212
jira Avatar asked Dec 20 '13 20:12

jira


1 Answers

This does not compile because you are trying to return a non-constant reference to an element of the vector, which is itself const.

The reason the vector is const is that your member function is declared const:

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

This const-ness marker gets propagated to all members, including the _vector.

To fix this problem, add const to the type of the reference being returned (demo).

like image 91
Sergey Kalinichenko Avatar answered Oct 04 '22 08:10

Sergey Kalinichenko