Here is my problem. I made a class with a member function declared as const that uses an external function that I cannot modify (declared in someone else's code) and that is not declared const. More precisely
Someone else's code
class B {
public:
void foo();
};
My code
class A : public B {
public:
void bar() const {
this->foo();
}
};
I know that for member data we can force const-correctness by using mutable or const_cast. How can I 'hack' foo such that my compiler understands that I would like to use it as if it was const even if it is not declared in someone else's code ?
Dont do that.
Don't do it like this:
Example:
Edit: The valid use-case for this is if:
B::foo()doesn't modify state, and could have been declaredconst, but...B::foo()forgot to declare it const, and...In theory this cannot happen but in practice it sometimes does.
The better answer, as the other answerers have correctly said, is to have
B::foo()fixed, or to provide an alternate function which does the same thing is declared const.