I was re-reading c++ primer(4th ed.) today - the section on member functions and const references etc, and I came up with this wierd little program:
using st
const qualifier restricts to call non-const methods on your object, so the problem is your design that allows you to give non-const reference to a member by a const method.
The common approach is
Member& getccp() {return *member;}
const Member& getccp() const {return *member;}
In some cases when logical constness of your object don't suffer from external modification of it's member you can allow
Member& getccp() const {return *member;}
Another example of difference in logical and formal constness is the mutable members. I.e. mutable can be some term that was computed at the last const method's invoke, if you will get the same input at next invoke you can easily return stored value.