You cannot give a reference to something unmodifiable ( const ) to someone who might modify it.
PHP Code:
#include <iostream>
using namespace std;
class Base
{
public:
Base( int number = 0 )
{
m_iNumber = number;
}
void setNumber( int number )
{
m_iNumber = number;
}
const int& getNumber() const
{
return m_iNumber;
}
int& getNumber()
{
return m_iNumber;
}
private:
int m_iNumber;
};
int main()
{
Base base(8);
cout << base.getNumber() << endl; // const version called
base.getNumber() = 666; // non-const version called, will not compile on const objects
cout << base.getNumber() << endl; // const version called
cin >> base.getNumber(); // non-const obviously
cout << base.getNumber() << endl; // const version called
return 0;
}
// As you have both a const and non const accessor function,
// I would suggest dropping the set function and renaming both
// getNumber functions to Number instead.
//
// In C++.NET this is called a property.