I need to to a modification in an existing function, having some const
input parameters:
int f(const owntype *r1, const owntype *r2)
In order to do this, I would like to call a subfunction, who is using the same type, but without the const
keyword:
void subfunction (owntype *src, owntype *dst)
I've already tried this (along with quite some other variants), but it does not work:
int f(const owntype *r1, const owntype *r2) {
...
subfunction((const owntyp*) r1);
...
}
How can I get this to compile without needing to change the parmeter description of both functions?
As long as subfunction
does not attempt to write to the pointed-to objects *r1
and *r2
it's alright to call it through a cast:
subfunction(owntype*)r1, (owntype*)r2);
The standard(§6.7.3) says:
If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined.
So, reading from it is fine, as long as you don't write to it.