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.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With