'Недопустимое преобразование из some_type ** к константе some_type **'

У меня есть функция, которая требует const some_type** как аргумент (some_type структура, и для функции нужен указатель на массив этого типа). Я объявил локальную переменную типа some_type*, и инициализированный это. Затем я вызываю функцию как f(&some_array), и в компиляторе (gcc) говорится:

error: invalid conversion from ‘some_type**’ to ‘const some_type**’

Какова проблема здесь? Почему я не могу преобразовать переменную в константу?

8
задан petersohn 20 April 2010 в 07:59
поделиться

3 ответа

У вас есть несколько вариантов обойти то, что Джеймсдлин изложил в своем ответе.

Вы можете использовать промежуточную переменную.

some_type const* const_some_array = some_array;
f(&const_some_array);

Вы можете изменить параметры f .

void f(some_type const* const* some_array);
1
ответ дан 5 December 2019 в 12:57
поделиться

Вероятно, вам нужно указать еще какой-то контекст, например, аргумент передает данные в или из (или и то, и другое?) В функцию?

Попробуйте также делая вашу переменную константой:

some_type const *some_array = ....;

Это читается как «some_array - указатель на константу some_type». Код не может изменить то, на что указывает. Таким образом, вы должны объявить свою переменную const перед передачей ее функции.

(Отредактировано ...)

1
ответ дан 5 December 2019 в 12:57
поделиться