For example I have an accessor function for a class:
class A {
public:
int a;
int& getA() const;
};
int& A::getA () const {
return a; // error: invalid initialization of reference of type 'int&' from expression of type 'const // int'
}
The questions are:
1. The data member 'a' is not of type 'const int', so why the error?
2. Also when I change the return type to int it works. why?
As far as the
constmember functiongetAis concerned, yes it is.All non-
mutablemembers areconsted from the point of view of aconstmember function. Therefore, you are trying to bind aconst intto anint&.You can copy a
const intinto anintjust fine.