I've got a function that requires const some_type**
as an argument (some_type
is a struct, and the function needs a pointer to an array of this type). I declared a local variable of type some_type*
, and initialized it. Then I call the function as f(&some_array)
, and the compiler (gcc) says:
error: invalid conversion from ‘some_type**’ to ‘const some_type**’
What's the problem here? Why can't I convert a variable to const?
See: Why can't I pass a char **
to a function which expects a const char **
? from the comp.lang.c FAQ.
You have a few options to get around what jamesdlin outlined in his answer.
You could use an intermediate variable.
some_type const* const_some_array = some_array;
f(&const_some_array);
You could change the parameters of f
.
void f(some_type const* const* some_array);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With